Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Canvas.Draw, Bitmap, ImageList [D7]


nAlex ©   (2007-10-24 13:28:00) 

У меня есть ImageList с загруженным в него bmp. В TListView CustomDrawItem я отрисовываю самостоятельно пункты, но вот вопрос, как мне сделать этот Bitmap прозрачным? Сейчас поясню:

Сначала я отрисовываю выделение пункта:
if Item.Selected then
...
ListView1.Canvas.Rectangle(...)


А потом рисую Bitmap из листа:
ListView1.Canvas.Draw(1, IconRect.Top + 1, B);

И получается, что моим рисунком часть выделения (Rectangle) перекрывается, как можно добиться частичной прозрачности? Как в TImage.Transparent.


Ega23   (2007-10-24 14:06:00) [1]


> Здается мне, что это код добавления новой картинки с диска,
>  а у автора уже есть картика из дизайнтайма и ему ее нужно
> просто нанести.


Ну да, только не с диска, а из БД.


nAlex   (2007-10-24 13:55:00) [2]

Спасибо. Совет
> homm ©   (24.10.07 13:40) [8]

очень помог.


homm   (2007-10-24 13:53:00) [3]

> [9] Ega23 ©   (24.10.07 13:44)

Здается мне, что это код добавления новой картинки с диска, а у автора уже есть картика из дизайнтайма и ему ее нужно просто нанести.


Ega23   (2007-10-24 13:44:00) [4]


bmp := TBitmap.Create;
bmp.Transparent := True;
bmp.TransparentMode := tmAuto;
try
 bmp.LoadFromStream(ms);
 bmp.Width := Width;
 bmp.Height := Height;
 ImageIndex := ImageList. AddMasked(bmp, bmp.TransparentColor);
except
 ImageIndex:=-1;
end;


homm   (2007-10-24 13:40:00) [5]

ImageList.Draw(ListView.Canvas,1,IconRect.Top+1,Item.ImageIndex)


homm   (2007-10-24 13:39:00) [6]

> [6] nAlex   (24.10.07 13:38)
> Бррр.. что то я не понял, я же загружаю из него в битмап
> а Draw делаю для ListView.Canvas.

А ты не делай так.


nAlex   (2007-10-24 13:38:00) [7]

Бррр.. что то я не понял, я же загружаю из него в битмап а Draw делаю для ListView.Canvas.


homm   (2007-10-24 13:35:00) [8]

> [4] nAlex   (24.10.07 13:33)

у ImageList, насколько я помню, есть метод Draw, который рисует с учетом прозрачного цвета.


nAlex   (2007-10-24 13:33:00) [9]

Самое прямое, я битмап загружаю из ImageList. Возможно я не так как надо его оттуда достаю...
 ImageList1.GetBitmap(Item.ImageIndex, B);


homm   (2007-10-24 13:31:00) [10]

Не то сморозил…


> [0] nAlex   (24.10.07 13:28)
> [1] nAlex   (24.10.07 13:29)

Какое отношение имеет ко всему этому ImageList ?


homm   (2007-10-24 13:30:00) [11]

у ListView1 нет что-то наподобии ТрнсперентКолор?


nAlex   (2007-10-24 13:29:00) [12]

Ещё, сделано это, но не помогает:

 B := TBitmap.Create;
 B.Transparent := True;
 B.TransparentMode := tmAuto;


Наверх

Титульная страница Поиск, карта сайта Написать письмо