怎样将BMP转化为ICO?(50分)

  • 主题发起人 主题发起人 李捷
  • 开始时间 开始时间
用IrfanView(一个小巧的看图软件)
要的话回个话!
 
去深度历险(http://vcl.vclxx.com)下载Icon2bit.zip,既有程序,又有代码,研究一下
就行了。
 
跟转化成jpeg一样的
var bm:tbitmap;
ic:tico;
begin
bm:=tbitmap.creat;
ic:=tico.creat;
bm.loadfromfile('c:/.../.bmp');
ic.assign(bm);
ic.savetofile('./../.ico');
ic.free;
bm.free;
end.
就够了
 
to 侠客:
你这样好象不行哦?

下面这样子应该可以:
procedure Bmp2Ico(bmp, ico: string); //bmp和ico是文件名
var
IconSizeX : integer;
IconSizeY : integer;
myBmp : TBitmap;
AndMask : TBitmap;
XOrMask : TBitmap;
IconInfo : TIconInfo;
Icon : TIcon;
begin
IconSizeX := GetSystemMetrics(SM_CXICON);
IconSizeY := GetSystemMetrics(SM_CYICON);

myBmp := TBitmap.Create;
myBmp.LoadFromFile(bmp);

AndMask := TBitmap.Create;
AndMask.Width := IconSizeX;
AndMask.Height := IconSizeY;
AndMask.Canvas.Brush.Color := clBlack;
AndMask.Canvas.Rectangle(0, 0, IconSizeX, IconSizeY);

XOrMask := TBitmap.Create;
XOrMask.Width := IconSizeX;
XOrMask.Height := IconSizeY;
StretchBlt(XorMask.Canvas.Handle, 0, 0, IconSizeX, IconSizeY,
myBmp.Canvas.Handle, 0, 0, myBmp.Width, myBmp.Height, SRCCOPY);

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;
myBmp.Free;

Icon.SaveToFile(ico);
Icon.Free;
end;

 
嘿嘿,刚发现可以少用一个TBitmap的.......
 
wind2000,给我一个吧!谢谢
 
接受答案了.
 
后退
顶部