Windows with Delphi Windows API (94) Windows Filesystem (41) Windows Forms (69) Windows Graphics (38)
Exchange Links About this site Links to us 
|
How do I create an icon from a bitmap?
This article has not been rated yet. After reading, feel free to leave comments and rate it.
You must create two bitmaps, a mask bitmap (called the "AND"
bitmap) and a image bitmap (called the XOR bitmap). You can pass the
handles to the "AND" and "XOR" bitmaps to the Windows API function
CreateIconIndirect() and use the returned icon handle in your
application.
 | |  | | procedure TForm1.Button1Click(Sender: TObject);
var
IconSizeX: integer;
IconSizeY: integer;
AndMask : TBitmap;
XorMask : TBitmap;
IconInfo : TIconInfo;
Icon : TIcon;
begin
IconSizeX := GetSystemMetrics(SM_CXICON);
IconSizeY := GetSystemMetrics(SM_CYICON);
AndMask := TBitmap.Create;
AndMask.Monochrome := true;
AndMask.Width := IconSizeX;
AndMask.Height := IconSizeY;
AndMask.Canvas.Brush.Color := clWhite;
AndMask.Canvas.FillRect(rect(0, 0, IconSizeX, IconSizeY));
AndMask.Canvas.Brush.Color := clblack;
AndMask.Canvas.ELLIPSE(4, 4, IconSizeX-4, IconSizeY-4);
Form1.Canvas.Draw(IconSizeX*2, IconSizeY, AndMask);
XorMask := TBitmap.Create;
XorMask.Width := IconSizeX;
XorMask.Height := IconSizeY;
XorMask.Canvas.Brush.Color := clblack;
XorMask.Canvas.FillRect(rect(0, 0, IconSizeX, IconSizeY));
XorMask.Canvas.Pen.Color := clRed;
XorMask.Canvas.Brush.Color := clRed;
XorMask.Canvas.ELLIPSE(4, 4, IconSizeX-4, IconSizeY-4);
Form1.Canvas.Draw(IconSizeX*4, IconSizeY, XOrMask);
Icon := TIcon.Create;
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;
Form1.Canvas.Draw(IconSizeX*6, IconSizeY, Icon);
Application.Icon := Icon;
InvalidateRect(Application.Handle, nil, true);
Icon.Free;
end; | |  | |  | You don't like the formatting? Check out SourceCoder then!
Comments:
|