Delphi32.com - Home!
| Home/News | Downloads | Forums | D32 Magazine | Resources | Info and Facts |  
 
 How do I create an icon from a bitmap?


How do I create an icon from an bitmap?   

    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. Example:

    procedure TForm .Button Click(Sender: TObject);
    var
      IconSizeX : integer;
      IconSizeY : integer;
      AndMask : TBitmap;
      XOrMask : TBitmap;
      IconInfo : TIconInfo;
      Icon : TIcon;
    begin
     {Get the icon size}
      IconSizeX := GetSystemMetrics(SM_CXICON);
      IconSizeY := GetSystemMetrics(SM_CYICON);
     {Create the "And" mask}
      AndMask := TBitmap.Create;
      AndMask.Monochrome := true;
      AndMask.Width := IconSizeX;
      AndMask.Height := IconSizeY;
     {Draw on the "And" mask}
      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);
     {Draw as a test}
      Form .Canvas.Draw(IconSizeX * 2, IconSizeY, AndMask);
     {Create the "XOr" mask}
      XOrMask := TBitmap.Create;
      XOrMask.Width := IconSizeX;
      XOrMask.Height := IconSizeY;
     {Draw on the "XOr" mask}
      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);
     {Draw as a test}
      Form .Canvas.Draw(IconSizeX * 4, IconSizeY, XOrMask);
     {Create a icon}
      Icon := TIcon.Create;
      IconInfo.fIcon := true;
      IconInfo.xHotspot := 0;
      IconInfo.yHotspot := 0;
      IconInfo.hbmMask := AndMask.Handle;
      IconInfo.hbmColor := XOrMask.Handle;
      Icon.Handle := CreateIconIndirect(IconInfo);
     {Destroy the temporary bitmaps}
      AndMask.Free;
      XOrMask.Free;
     {Draw as a test}
      Form .Canvas.Draw(IconSizeX * 6, IconSizeY, Icon);
     {Assign the application icon}
      Application.Icon := Icon;
     {Force a repaint}
      InvalidateRect(Application.Handle, nil, true);
     {Free the icon}
      Icon.Free;
    end;
    

     



  << Previous Faq     Complete List     Next Faq >>  



 
 Hits/month  2,500,000+ 
 Downloads
 (Since May 2000)
 7,393,709 
 Total Files  6,023 
 Forum msgs  7,670 
 Articles/FAQs  70+/900+ 
Kylix
Tips n Tricks
FAQs
Knowledge Base
Bug Listings
Articles
Books
Newsgroups
Links
Submissions
Testimonials
Advertising
Contact Us
About Us
Search Amazon:
Top Selling Software at Amazon

| Home/News | Downloads | Forums | Resources | Info and Facts | Testimonials |
  Site Search:
 


Comments/Problems: Webmaster@delphi32.com
Copyright © 1998-2006, Delphi32.com. All rights reserved.
Terms of Use