bmp to ico 如何将bmp文件转成.ico文件要求背景是透明的. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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;from超级猛料 把一个 ICO 转换为 BMP(1) 方法 1var Icon : TIcon; Bitmap : TBitmap;begin Icon := TIcon.Create; Bitmap := TBitmap.Create; Icon.LoadFromFile('c:\picture.ico'); //Load an ICOfrom File Bitmap.Width := Icon.Width; Bitmap.Height := Icon.Height; Bitmap.Canvas.Draw(0, 0, Icon ); Bitmap.SaveToFile('c:\picture.bmp'); //Convert ICO toBMP! Icon.Free; Bitmap.Free;end;(2) 方法 2procedure TForm1.ConvertClick(Sender: TObject);var winDC, srcdc, destdc : HDC; oldBitmap : HBitmap; iinfo : TICONINFO;begin GetIconInfo(Image1.Picture.Icon.Handle, iinfo); WinDC := getDC(handle); srcDC := CreateCompatibleDC(WinDC); destDC := CreateCompatibleDC(WinDC); oldBitmap := SelectObject(destDC, iinfo.hbmColor); oldBitmap := SelectObject(srcDC, iinfo.hbmMask); BitBlt(destdc, 0, 0,Image1.picture.icon.width,Image1.picture.icon.height,srcdc,0, 0, SRCPAINT); Image2.picture.bitmap.handle := SelectObject(destDC,oldBitmap); DeleteDC(destDC); DeleteDC(srcDC); DeleteDC(WinDC); image2.Picture.Bitmap.savetofile(ExtractFilePath(Application.ExeName)+ 'myfile.bmp');end;procedure TForm1.FormCreate(Sender: TObject);begin image1.picture.icon.loadfromfile('c:\myicon.ico');end; to outer2000(天外流星)你的这段代码我试过了,真彩的图标转换后图标失真,变面了2色的。 outer2000(天外流星)的办法应该可以呀! 关于GDI+从流加载PNG文件 ?急急,向高手請教如何把word存入數據庫中(sql),並讀出來,謝謝 DEPHI 中的操作符 @ # $ 怎样向注册表中写值?,在线等待。 请问怎样分别得到一个TDateTime中的日期和时间? delphi中如果写开机就能运行的程序代码。 新手问题: 类 It's a very bad thing! 录入界面问题,来者有分 数据库DateTime问题一则。 想写个类,用来描述并保存一个Oracle数据库的表(包括表结构和所有纪录的字段值),请问对它的实现有何高见? bmp to 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;
from超级猛料
(1) 方法 1var Icon : TIcon; Bitmap : TBitmap;begin Icon := TIcon.Create; Bitmap := TBitmap.Create; Icon.LoadFromFile('c:\picture.ico'); //Load an ICOfrom File Bitmap.Width := Icon.Width; Bitmap.Height := Icon.Height; Bitmap.Canvas.Draw(0, 0, Icon ); Bitmap.SaveToFile('c:\picture.bmp'); //Convert ICO toBMP! Icon.Free; Bitmap.Free;end;
(2) 方法 2procedure TForm1.ConvertClick(Sender: TObject);var winDC, srcdc, destdc : HDC; oldBitmap : HBitmap; iinfo : TICONINFO;begin GetIconInfo(Image1.Picture.Icon.Handle, iinfo); WinDC := getDC(handle); srcDC := CreateCompatibleDC(WinDC); destDC := CreateCompatibleDC(WinDC); oldBitmap := SelectObject(destDC, iinfo.hbmColor); oldBitmap := SelectObject(srcDC, iinfo.hbmMask); BitBlt(destdc, 0, 0,Image1.picture.icon.width,Image1.picture.icon.height,srcdc,0, 0, SRCPAINT); Image2.picture.bitmap.handle := SelectObject(destDC,oldBitmap); DeleteDC(destDC); DeleteDC(srcDC); DeleteDC(WinDC); image2.Picture.Bitmap.savetofile(ExtractFilePath(Application.ExeName)+ 'myfile.bmp');end;
procedure TForm1.FormCreate(Sender: TObject);begin image1.picture.icon.loadfromfile('c:\myicon.ico');end;