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

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

Альфа канал иконки [D7, XP]


NS ©   (2012-12-28 03:32:00) 

Здравствуйте. Вопрос прислал Иванов из Калганова.

При получении ICONINFO иконок файлов я заметил, что некоторые hbmColorуже имеют альфа канал, в то время как другие полностью прозрачны и "требуют обработки" hbmMask'ом.

Как отличить эти битмапы?


NS   (2012-12-28 11:50:00) [1]


var
 icon: HICON;
 FI: SHFILEINFO;
 II: ICONINFO;
 BI: tagBITMAPINFO;
 DC: HDC;
 ImageList: HIMAGELIST;
begin
SHGetFileInfo(PChar(fname), 0, FI, SizeOf(FI), SHGFI_SYSICONINDEX or SHGFI_ICON or SHGFI_LARGEICON);
ImageList:= GetImageListSH(SHIL_EXTRALARGE);
icon:= ImageList_GetIcon(ImageList, FI.iIcon, ILD_NORMAL);
GetIconInfo(icon, II);
DC:= CreateCompatibleDC(0);
InitBIHeader(II.hbmColor, BI.bmiHeader);
Bits:= Pointer(GlobalAlloc(GMEM_FIXED, BI.bmiHeader.biSizeImage));
GetDIBits(DC, II.hbmColor, 0, BI.bmiHeader.biHeight, Bits, BI, DIB_RGB_COLORS);
DeleteDC(DC);
DeleteObject(II.hbmMask);
DeleteObject(II.hbmColor);
end;


В одном случае Bits уже будет содержать информацию об альфа канале, в другом он будет полностью нулевой.


KilkennyCat   (2012-12-28 07:13:00) [2]


> Как отличить эти битмапы?

а как

> При получении ICONINFO иконок файлов я заметил

?


Наверх

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