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