2015-11-08 16 views
5

Tôi đang cố gắng tải hình ảnh png vào một TImage bằng Delphi XE4. Png bắt đầu trong luồng: Ví dụ:Cách tải hình ảnh png vào một TImage

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

Tôi nhận được AV khi chạy mã này. Bất cứ ai có thể cho tôi biết những gì tôi đang làm sai?

Cảm ơn.

+1

Tại sao bạn không làm một số sửa lỗi? Chúng tôi không knoiw nơi AV là. Bạn có thể tái tạo nó? Bạn nên quan tâm nhiều hơn đến việc học các kỹ năng gỡ lỗi cơ bản hơn vấn đề cụ thể này –

Trả lời

14

Thuộc tính TImage.Picture.Graphic là không cho đến khi bạn tải đồ họa vào Picture.

gì bạn đang yêu cầu có thể đạt được như sau:

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

Tôi đang sử dụng delphi 5 nơi không có tệp PNGImage/dcu có sẵn. Bạn có thể cho tôi biết cách tôi có thể làm tương tự với luồng bộ nhớ không. –

+0

Xem bạn có thể cài đặt [PngComponents] này (https://code.google.com/archive/p/cubicexplorer/downloads) cho D5 hay không. Nếu tôi nhớ chính xác có một TPNGObject trong gói không TPNGImage. – RaelB

Các vấn đề liên quan