[英]TPNGImage `LoadFromStream` is not working in some cases
我正在使用VCL TPNGImage
類加載PNG圖像。 如果我使用FindClass(S).Create
創建TPNGImage
對象( S
是一個String
,並且可能包含'TPNGImage'
),則當我嘗試使用LoadFromStream
加載png圖像時,我會淡化訪問沖突異常。 你有什么想法?
請注意,我使用以下代碼創建新實例:
P := TPNGImage(FindClass('tpngimage').NewInstance);
您說您是通過以下方式創建類的:
P := TPNGImage(FindClass('tpngimage').NewInstance);
該代碼將分配一個實例,但不會運行構造函數。 那就是你的問題。 如果實例的構造不正確,則不能期望它能正常工作。
您需要使用
P := TPNGImage.Create;
現在,聽起來好像您希望能夠編寫可在各種TGraphic
后代上工作的代碼。 您可以進行這項工作。
首先,將變量聲明為TGraphic
類型。
var
Image: TGraphic;
然后掌握一個類的引用。
var
Cls: TPersistentClass;
....
Cls := FindClass('TPNGImage');
如果類引用兼容,則實例化該對象。
if Cls.InheritsFrom(TGraphic) then
Image := TGraphicClass(Cls).Create;
因為TGraphic
使用了將運行TPNGImage
構造函數的虛擬構造函數。 您可以使用相同的代碼來構造JPEG,BMP,GIF等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.