TGPImage加载png文件流为什么会报错?

marry2000 2008-05-01 08:28:08
procedure TForm1.Button1Click(Sender: TObject);
var
Stream: TMemoryStream;
istreamTest: IStream;
GPImage: TGPImage;
Graphic: TGPGraphics;
begin
Stream := TMemoryStream.Create;
Stream.LoadFromFile('c:\nofind.png');
istreamTest:= TStreamAdapter.Create(Stream);
Graphic := TGPGraphics.Create(Canvas.Handle);
try
GPImage := TGPImage.Create('c:\nofind.png');
//GPImage := TGPImage.Create(istreamTest); //这句会报错
Graphic.DrawImage(GPImage, 0, 0);
finally
Stream.Free;
GPImage.Free;
Graphic.Free;
end;
end;


直接用文件加载是没问题的,
加载bmp的文件流也OK,换成png就不行,真是怪了。。。
...全文
526 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
marry2000 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 maozefa 的回复:]
你说的这个问题可能是GDI+内部的一点小BUG,就是使用文件流加载PNG文件时会弹出CPU调试对话框,这个问题对你的程序没有影响,脱离Delphi调试环境,运行会正常。
[/Quote]

我测试了一下,
GPImage := TGPImage.Create(istreamTest); 这一句在脱离ide运行时确实没有报错,
但在执行Graphic.DrawImage(GPImage, 0, 0); 这句时报错。。。
jacknes009 2008-05-06
  • 打赏
  • 举报
回复

uses
pngimage;
var
filename : string;
gif : TGIFImage;
PNG: TPNGObject;
begin
PNG := TPNGObject.Create;
Bitmap := TBitmap.Create;
try
PNG.LoadFromFile(filename);
gif.Assign(PNG);
finally
PNG.Free;
end;
end

jacknes009 2008-05-06
  • 打赏
  • 举报
回复
下载个PNG类就可以用了,
下载地址
http://download.csdn.net/source/226243

使用

uses
pngimage;
var
filename : string;
Bitmap : TBitmap;
PNG: TPNGObject;
begin
PNG := TPNGObject.Create;
Bitmap := TBitmap.Create;
try
PNG.LoadFromFile(filename);
Bitmap.Assign(PNG);
finally
PNG.Free;
end;
end
marry2000 2008-05-06
  • 打赏
  • 举报
回复
真是头疼,
我在win2000系统的机子上测试,脱离ide运行,Graphic.DrawImage(GPImage, 0, 0);会报错,
在xp系统的机子测试,结果如楼上所说。没有报错,图片也能正确显示。
阿发伯 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 marry2000 的回复:]
引用 12 楼 maozefa 的回复:
你说的这个问题可能是GDI+内部的一点小BUG,就是使用文件流加载PNG文件时会弹出CPU调试对话框,这个问题对你的程序没有影响,脱离Delphi调试环境,运行会正常。


我测试了一下,
GPImage := TGPImage.Create(istreamTest); 这一句在脱离ide运行时确实没有报错,
但在执行Graphic.DrawImage(GPImage, 0, 0); 这句时报错。。。
[/Quote]

我用你的代码(1楼)脱离ide运行,什么错误也没有,图片也能正确地显示在窗口左上角。
阿发伯 2008-05-04
  • 打赏
  • 举报
回复
56了,哈哈
jinjazz 2008-05-04
  • 打赏
  • 举报
回复
弱弱的问一句,楼上大叔今年五十几了?
阿发伯 2008-05-04
  • 打赏
  • 举报
回复
你说的这个问题可能是GDI+内部的一点小BUG,就是使用文件流加载PNG文件时会弹出CPU调试对话框,这个问题对你的程序没有影响,脱离Delphi调试环境,运行会正常。
marry2000 2008-05-04
  • 打赏
  • 举报
回复
谢谢楼上,那位大叔的文章看了,问题依旧
jinjazz 2008-05-04
  • 打赏
  • 举报
回复
这位大叔的文章可能会对你有帮助
http://blog.csdn.net/maozefa/archive/2007/07/12/1685930.aspx
jinjazz 2008-05-04
  • 打赏
  • 举报
回复
不好意思,没有注意你的问题
jinjazz 2008-05-04
  • 打赏
  • 举报
回复
下载一个支持png的开发包 。
http://pngdelphi.sourceforge.net/pngimage143.zip

效果和代码参考
http://borland.mblogger.cn/jinjazz/posts/21093.aspx
飞天揽月 2008-05-04
  • 打赏
  • 举报
回复
http://www.delphifans.com/SoftView/SoftView_2496.html

看这个 使用其中的TPngSpeedButton 即可
marry2000 2008-05-04
  • 打赏
  • 举报
回复
上班了,应该有人来了吧,再up~
marry2000 2008-05-02
  • 打赏
  • 举报
回复
不信没人知道~
加分100~~~
marry2000 2008-05-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ccdarkness 的回复:]
处理png要用pngimage单元
在这里: http://pngdelphi.sourceforge.net
[/Quote]

加了也一样的,跟这个没关系。
marry2000 2008-05-01
  • 打赏
  • 举报
回复
顶起呀,没人知道么?
ccdarkness 2008-05-01
  • 打赏
  • 举报
回复
处理png要用pngimage单元
在这里: http://pngdelphi.sourceforge.net
marry2000 2008-05-01
  • 打赏
  • 举报
回复
再顶顶~

1,184

社区成员

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

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