Форум: "Начинающим";
Текущий архив: 2013.09.15;
Скачать: [xml.tar.bz2];
ВнизАльфа канал иконки Найти похожие ветки
← →
NS (2012-12-28 03:32) [0]Здравствуйте. Вопрос прислал Иванов из Калганова.
При получении ICONINFO иконок файлов я заметил, что некоторые hbmColor уже имеют альфа канал, в то время как другие полностью прозрачны и "требуют обработки" hbmMask"ом.
Как отличить эти битмапы?
← →
KilkennyCat © (2012-12-28 07:13) [1]
> Как отличить эти битмапы?
а как
> При получении ICONINFO иконок файлов я заметил
?
← →
NS (2012-12-28 11:50) [2]
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 уже будет содержать информацию об альфа канале, в другом он будет полностью нулевой.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.09.15;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.002 c