我尝试这样做:
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'.
答案 0 :(得分:1)
您无法将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;