gpt4 book ai didi

delphi - TPNGImage `LoadFromStream` 在某些情况下不工作

转载 作者:行者123 更新时间:2023-12-03 18:18:59 26 4
gpt4 key购买 nike

我正在使用 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 等。

关于delphi - TPNGImage `LoadFromStream` 在某些情况下不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15224938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com