簡體   English   中英

TPNGImage`LoadFromStream`在某些情況下不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM