gpt4 book ai didi

delphi - 如何将 FMX.TImage 分配给 VCL.TBitmap?

转载 作者:行者123 更新时间:2023-12-05 05:17:40 24 4
gpt4 key购买 nike

我尝试这样做:

BMP.Assign(Image1.Bitmap);

Image1 是一个 FMX 对象。
BMP 是标准 (VCL.Graphics) 位图。

我得到的错误是:

Project Project1.exe raised exception class EConvertError with message
'Cannot assign a TBitmapOfItem to a TBitmap'.

最佳答案

您不能将 FMX TBitmap 分配给 VCL TBitmap。它们彼此不兼容(一开始您甚至不应该在同一个项目中混合使用 VCL 和 FMX,它们不是为一起使用而设计的)。

您必须将 FMX TBitmap 保存到 BMP 格式的流/文件,然后将其加载到 VCL TBitmap

使用文件很简单:

Image1.Bitmap.SaveToFile('file.bmp');
BMP.LoadFromFile('file.bmp');

但是,当使用流代替时,FMX 的 TBitmap.SaveToStream() 仅保存为 PNG 格式,因此您必须使用 TBitmapCodecManager.SaveToStream() 来保存BMP 格式,例如:

Strm := TMemoryStream.Create;
try
Surface := TBitmapSurface.Create;
try
Surface.Assign(Image1.Bitmap);
TBitmapCodecManager.SaveToStream(Strm, Surface, '.bmp');
finally
Surface.Free;
end;
Strm.Position := 0;
BMP.LoadFromStream(Strm);
finally
Strm.Free;
end;

关于delphi - 如何将 FMX.TImage 分配给 VCL.TBitmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48967826/

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