2015-11-08 75 views
5

我想用Delphi XE4将png图像加载到TImage中。 png从一条流开始:例如如何将PNG图像加载到TImage中

Stream := TMemoryStream.Create; 
    try 
    Stream.LoadFromFile('c:\file.png'); 
    Stream.Position := 0; 
    Image1.Picture.Graphic.LoadFromStream(Stream); 
    finally 
    Stream.Free; 
    end; 

我得到一个AV当我运行这段代码。谁能告诉我我做错了什么?

谢谢。

+1

你为什么不去做一些调试?我们不知道AV的位置。你可以重现吗?你应该更关心学习基本的调试技巧,而不是这个特定的问题 –

回答

14

TImage.Picture.Graphic属性为零,直到您将图形加载到Picture

你问什么就可以实现如下:

uses pngimage; 

    Stream := TMemoryStream.Create; 
    try 
    // obtain png image, load from file or other.. 
    .... 
    Image := TPngImage.Create; 
    try 
     Stream.Position := 0; 
     Image.LoadFromStream(Stream); 
     Image1.Picture.Graphic := Image; 
    finally 
     Image.Free; 
    end; 
    finally 
    Stream.Free; 
    end; 
+0

我使用delphi 5,没有PNGImage文件/ dcu可用。你可以告诉我怎么可以做与记忆流一样。 –

+0

看看您是否可以为D5安装[PngComponents](https://code.google.com/archive/p/cubicexplorer/downloads)。如果我记得正确,那么包中的TPNGObject不是TPNGImage。 – RaelB