Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

Как изменить иконку в ImageList?   Найти похожие ветки 

 
lipskiy ©   (2004-09-23 22:40) [0]

Нужно определенную иконку в ImageList модифицировать (нарисовать на ней что-то иное, в частности - прямоугольник указанного цвета). Все попытки рисования приводят к тому, что сбивается маска, иконка теряет прозрачность и становится на белом фоне.
Делаю так:

Bmp:= TBitmap.Create;
ImgTools.GetBitmap(24,Bmp);
Bmp.Canvas.Brush.Color:= Color;
Rect.Left:= 0;
Rect.Top:= 12;
Rect.Right:= 15;
Rect.Bottom:= 15;
Bmp.Canvas.FillRect(Rect);
ImgTools.ReplaceMasked(24,Bmp,???{вставлял разные цвета});
Bmp.Free;

По всему выходит, что нужно как-то взять маску и вернуть ее обратно, но как взять маску?
А может я вообще неверно делаю?


 
Dimaxx   (2004-09-24 00:18) [1]

Получить иконку через GetIcon, изменить и вновь назначить ее прежнему индексу через ReplaceIcon. C битмапом тоже, но GetBitmap и Replace.

Удачи!


 
lipskiy ©   (2004-09-24 22:19) [2]

Но у TIcon нет канвы! На ней нельзя рисовать!


 
Piter ©   (2004-09-25 00:31) [3]

Имхо, вставляешь не верно :)


 
lipskiy ©   (2004-09-25 00:38) [4]

Имхо, тоже.
Но как верно???


 
Piter ©   (2004-09-25 00:58) [5]

а черт его знает... я TImageList всегда только в редакторе работал...

Ну покопайся в VCL - есть же место где он картинки грузит? Найди, разберись...

К тому же TCustomImageList имеет метод Draw - может там чего откопать можно?
Ибо если нельзя было рисовать ни иконках - нафига ему такой метод?


 
Piter ©   (2004-09-25 00:59) [6]

lipskiy ©   (25.09.04 0:38) [4]
Но как верно???


а ты не забываешь, что в Дельфи применяется BGR, а не RGB? Поэтому, может и маску составляешь неверно, перекопировав из какого-нибудь фотошопа?


 
lipskiy ©   (2004-09-25 01:05) [7]


> а ты не забываешь, что в Дельфи применяется BGR, а не
> RGB? Поэтому, может и маску составляешь неверно,
> перекопировав из какого-нибудь фотошопа?

Не, это я помню хорошо, младший байт - красный :).
Я не копирую, иконка создана в редакторе иконок (ArtIcons) и в дельфовой проге изначально выглядит нормально, пока я на ней не порисовал. Как только порисую - так маска испорчена.

> имеет метод Draw

Этот метод позволяет наносить содержимое имейджлиста на другие контролы, то есть draw не на иконке, а иконкой по контролу, это не то.

В принципе проблема сводится к одному - как получить маску из ImageList, чтобы при реплейсе вернуть ее обратно. Никаких похожих методов я не нашел...


 
lipskiy ©   (2004-09-27 00:35) [8]

Так никто больше ничего не подскажет?



Страницы: 1 вся ветка

Текущий архив: 2004.10.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
4-1094121621
Владимир
2004-09-02 14:40
2004.10.10
Как в одном приложении сделать окна (формы) доступные по Alt+Tab


4-1094046359
Dec
2004-09-01 17:45
2004.10.10
Создать окно, содержащее CheckBox c использованием API


4-1094820071
pavel_guzhanov
2004-09-10 16:41
2004.10.10
Раскладка клавиатуры


1-1095429251
kot_phg
2004-09-17 17:54
2004.10.10
Как сделать чтобы задача выполнялась в фоновом режиме...


1-1096297171
Skywalker
2004-09-27 18:59
2004.10.10
Выделение памяти