用Canvas.StretchDraw画ICON为什么不能缩放?(50分)

S

syt2000

Unregistered / Unconfirmed
GUEST, unregistred user!
先定义
var icon:TICON;
然后用canvas.StretchDraw(r,icon);
不能实现图标的缩放,不知为什么?
但是
var bmp:TBitMap;
canvas.StretchDraw(r,bmp);可以实现位图的缩放,不知为什么?
难道用canvas.StretchDraw(r,icon);不能实现图标的缩放吗?
 
你可以先把icon 画到bmp上 然后再次画到其他canvas
 
amakusa:
如何把ICON画到BMP上?
 
procedure TForm1.Button3Click(Sender: TObject);
var
icon:TIcon;
bmp:Tbitmap;
begin
icon:=TIcon.Create;
icon.LoadFromFile('c:/windows/winupd.ico');
bmp:=TBitmap.create;
bmp.Width :=icon.Width ;
bmp.height :=icon.height ;
bmp.canvas.Draw(0,0,icon);

canvas.StretchDraw(Rect(0,0,100,100),bmp);
bmp.free;
icon.free;
end;
 
var
Icon:TIcon;
IconInfo:TIconInfo;
Bmp:TBitmap;
begin
Icon:=TIcon.Create;
Bmp:=TBitmap.Create;
Icon.LoadFromFile('c:/1.ico');
GetIconInfo(Icon.Handle,IconInfo);
Bmp.Handle:=IconInfo.hbmColor;
Bmp.SaveToFile('c:/1.bmp');
end;
Icon文件中 Color 和 Mask 是分开的,通过Color和Mask的xor实现透明.
Msak为单色图像,白色部分为透明部分.
 
顶部