头快炸了

CCC的 2012-08-18 01:41:05
D7下怎么实现ICON转PNG,用GDI+先将ICON转为BMP,再保存为PNG,但是不能是实现透明,代码如下,望指教,找了好久好多资料
,人都快疯了,救救我吧,如果意见采纳,分全给他了
procedure SaveTofile(icon : TBitmap;aFile : string);
var
Gpbmp: TGpBitmap;
CLSID : TGUID;
Parameters: TEncoderParameters;
Quality: Integer;
begin
if GetEncoderClsid('image/png',CLSID) <> - 1 then
begin
Gpbmp := TGpBitmap.Create(icon.Handle, icon.Palette);
Parameters.Count := 1;
Parameters.Parameter[0].NumberOfValues := 1;
Quality := 100;
Parameters.Parameter[0].Value := @Quality;
Gpbmp.Save(aFile,CLSID,@Parameters);
FreeandNil(Gpbmp);
end;
end;

function IcoFiletoPNG(const Source, Dest: String): Boolean;
var
icon: TIcon;
Bitmap: TBitmap;
begin
Result := True;
icon := TIcon.Create;
Bitmap := TBitmap.Create;
try
try
icon.LoadFromFile(Source);
Bitmap.Width := Icon.Width;
Bitmap.Height := Icon.Height;
Bitmap.Canvas.Draw(0, 0, Icon);
SaveTofile(Bitmap, Dest);
except
Result := False;
end;
finally
icon.Free;
Bitmap.Free;
end;
end;
...全文
135 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
山东蓝鸟贵薪 2012-08-18
  • 打赏
  • 举报
回复
不太清楚,我在学习中
DelphiTeacher 2012-08-18
  • 打赏
  • 举报
回复
这个问题呢,
基本上思路是这样的,
新建一个GDI+位图,在这个位图上创建一块画布,画布大小和Icon的大小一致,
把Icon画在这块画布上,再将这个GDI+位图保存成Png图片文件即可
(代码基本逻辑如下,你转换一下)
procedure ConvertIconToPng(AIcon:TIcon;APngFile:String);
var
APngGPBitmap:IGPBitmap;
AIconGPBitmap:IGPBitmap;
APngGraphics:IGPGraphics;
begin
AIconGPBitmap:=TGPBitmap.Create(AIcon.Handle);
APngGPBitmap:=TGPBitmap.Create(AIconGPBitmap.Width,AIconGPBitmap.Height);
APngGraphics:=TGPGraphics.Create(APngGPBitmap);
APngGraphics.DrawImage(AIconGPBitmap,0,0);
APngGPBitmap.Save(APngFile,TGPImageFormat.Png);
end;

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧