如何把BMP格式的图片转化成ICON格式的图片 (50分)

  • 主题发起人 主题发起人 zhukairu
  • 开始时间 开始时间
Z

zhukairu

Unregistered / Unconfirmed
GUEST, unregistred user!
我在做一个程序后,产生了一个执行文件,这个文件的图标很土。是DELPHI的默认图标。
我想把它改掉。但我用的画画水平有限,但我有许多BMP格式的图片,能不能把它改成ICON格式的
图标
 
procedure TForm1.Button1Click(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}
Form1.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}
Form1.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}
Form1.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;
 
很简单啦
 
在 www.pconline.com.cn/download 上面找找。。

很多工具的,好像有一个是Any2Ico很好,可以转换很多格式到ICO文件的。。[:)]
 
如果是32x32的16色bmp,直接改擴展名為ICO就可以了
windows回自動幫你轉換
 
多人接受答案了。
 
后退
顶部