![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
BMP -> ICO [D6, Win95/98, WinME, WinXP]
PaRL © (2002-11-17 21:26:00)Как. Чтобы Delphi принять могла.
PaRL (2002-11-17 21:43:00) [1]Ну вот тока к мануалам меня отправляь не надо...
Спасибо.
Феу (2002-11-17 21:39:00) [2]RTFM!!!
FAQ>>Графика>>Общие вопросы
или вот еще
procedure BmpToIcon(Icon : TIcon; Bitmap : TBitmap);
var
IconSizeX : integer;
IconSizeY : integer;
AndMask : TBitmap;
XOrMask : TBitmap;
IconInfo : TIconInfo;
begin
//Get the icon size
IconSizeX := GetSystemMetrics(SM_CXICON);
IconSizeY := GetSystemMetrics(SM_CYICON);
//Create the "And" mask
AndMask := TBitmap.Create;
AndMask.Width := IconSizeX;
AndMask.Height := IconSizeY;
//Copy Bitmap to AndMask and make a mask
AndMask.Canvas.Draw(0, 0, Bitmap);
AndMask.Mask(clSilver);
//Create the "XOr" mask
XOrMask := TBitmap.Create;
XOrMask.Width := IconSizeX;
XOrMask.Height := IconSizeY;
//Copy Bitmap to XorMask
XOrMask.Canvas.Draw(0, 0, Bitmap);
//Invert AndMask
AndMask.Canvas.CopyMode:=cmDstInvert;
AndMask.Canvas.Draw(0, 0, XOrMask);
//Fill silver on XorMask with Black
XOrMask.Canvas.CopyMode:= cmSrcAnd;
XOrMask.Canvas.Draw(0, 0, AndMask);
//restore mask
AndMask.Canvas.CopyMode:=cmDstInvert;
AndMask.Canvas.Draw(0, 0, XOrMask);
IconInfo.fIcon := true;
IconInfo.xHotspot := 0;
IconInfo.yHotspot := 0;
IconInfo.hbmMask := AndMask.Handle;
IconInfo.hbmColor := XOrMask.Handle;
Icon.Handle := CreateIconIndirect(IconInfo);
AndMask.Free;
XOrMask.Free;
end;