嗨!您能告诉我如何调整.png图像的大小吗?或者最好举个例子。我已经寻找了很长一段时间,似乎没有人知道如何调整.png图像的大小并保持其透明度。:(
发布于 2010-03-13 18:27:39
PNGImage组件(Delphi原生组件的基础)的原始作者有一个论坛,他和其他人在论坛上发布了关于如何使用PNGImage组件的代码片段。
在论坛被删除之前,我抓取了所有代码片段的副本,并将它们放在CodeGear代码中心网站上。
其中大多数(如果不是全部)都与原生PNG图像一起工作,并维护Alpha通道。
以下是包中包含的示例的完整列表:
上绘制png图像
发布于 2010-03-13 16:42:55
你可以在Delphi2010中使用Windows Imaging Component。您可以将PNG图像加载到TWICImage类中,然后从其句柄中提取IWICBitmapScaler接口。
使用IWICBitmapScaler,您可以缩小或放大图像。
WIC在Windows Vista和Windows 7上可用。对于Windows XP,您必须先安装更新才能使用它。
发布于 2013-05-16 02:30:29
有一些版本的PngImage (Portable Network Graphics Delphi)允许通过简单的StretchDraw来做这件事。
我有允许这样做的版本- 1.564 (2006年7月31日)
和不允许的版本- 1.4361 (2003年3月8日)
为了执行它,我使用了:
heart.png -透明的,我设法调整了它的大小并保存为透明的。
empty.png -纯透明的png。它被用作空白的一张纸,把我的图像放在上面。
我已经通过这样的代码检查过了:
procedure TForm1.Button1Click(Sender: TObject);
var pic_empty, pic_stamp, pic_result :TPicture;
r:TRect;
png : TPNGObject;
begin
pic_stamp := TPicture.Create;
pic_stamp.LoadFromFile('c:\heart.png');
pic_stamp.Graphic.Transparent := True;
pic_empty := TPicture.Create;
pic_empty.LoadFromFile('c:\empty.png');
pic_empty.Graphic.Transparent := True;
r.Left := 0;
r.Top := 0;
r.Right := r.Left + 100;
r.Bottom := r.Top + 100;
pic_result := tpicture.Create;
pic_result.Bitmap.Assign(pic_empty.Graphic);
pic_result.Graphic.Transparent := True;
pic_result.Bitmap.Canvas.StretchDraw(r,pic_stamp.Graphic);
pic_result.Bitmap.Width :=100;
pic_result.Bitmap.Height:=100;
png := TPNGObject.Create;
png.Assign(pic_result.Bitmap);
png.SaveToFile('c:\result.png');
png.Free;
pic_result.Free;
pic_empty.Free;
pic_stamp.free;
end;
Delphi-7,win7 x64
https://stackoverflow.com/questions/2437714
复制相似问题