[英]Delphi cannot open WMF file?
我正在使用Delphi XE3。 我嘗試使用以下代碼打開WMF文件:
var
Picture: TPicture;
begin
Picture := TPicture.Create();
Picture.LoadFromFile('E:\temp\thumbnail.wmf');
Picture.Free;
end;
但是我總是會得到無效的圖形異常。 我嘗試使用其他工具(例如ACDSee)打開wmf文件,並確認圖像已完成,確定。 為什么Delphi無法打開它。 我嘗試了不同版本的Delphi,但是都失敗了。
可以從以下網址下載wmf文件: https ://www.dropbox.com/s/wcqdma42xlra07p/thumbnail.wmf?dl = 0
謝謝
Delphi只能讀取以WMF可放置標題記錄開頭的可放置WMF圖元文件。 給定的文件不是可放置的WMF圖元文件。
TPicture
默認使用VCL的TMetafile
類加載WMF文件。 但是,正如Uwe的回答所述, TMetafile
只能加載可放置的 WMF圖元文件1 ,而您的文件不是可放置的WMF圖元文件2 。
甚至是VCL的TWICImage
類(它是Microsoft的WIC(Windows圖像組件)API的包裝程序,可以加載Windows支持的許多圖像格式)也無法加載文件,並且失敗的原因是操作系統本身,而不是VCL。 。 但是,WIC是可擴展的,因此您可以嘗試實現並注冊用於處理WMF文件的自定義解碼器。 MSDN上記錄了圖元文件格式。
但是,WMF實際上是16位時代以來的傳統圖像格式。 如果您真的想使用圖元文件,則應改用EMF, TMetafile
也支持。
1:可放置的WMF圖元文件包含一個額外的標頭,以描述應在GDI畫布上繪制圖像的XY坐標,以及每英寸用於縮放圖像的邏輯單位數。
2:您的文件將自己標識為MEMORYMETAFILE格式而不是DISKMETAFILE格式的不可放置圖元文件。 我想知道這是否與您的問題有關?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.