关注日期:
How to load large bitmap in FMX (fire monkey)
我需要在TBitmapSurface
上绘制FMX.Graphics.TBitmap
上的内容,我在网上找到了很多答案,但是它们要么在VLC
中,要么在{{ 1}}或他们的目标是FMX
和saving
而不是依靠loading
,这就是为什么我在这里问一个新问题。
现在,这是我当前的代码,用于将图像加载到TBitmap
上:
TBitmapSurface
现在,在搜索了一下之后,我发现可以在var
bitmapSurf: TBitmapSurface;
path: string;
begin
path := 'image.jpg';
bitmapSurf := TBitmapSurface.Create;
TBitmapCodecManager.LoadFromFile(path, bitmapSurf);
end;
上使用Scanline
,但是我不知道如何使用它在TBitmapSurface
上绘制网络上有些人曾经使用过TBitmap
,但是TBitmap.canvas.draw
上却没有这种东西!。
最后,我的目标是绘制一个非常大的图像(1000 * 16000),该图像会在FMX
TBitmapSurface
上加载到1
中(因为{ {1}}不支持TBitmap
,而我的身高为TBitmap
,我需要在两个8192px
上绘制它。
我正在使用Delphi 10.2.3。
谢谢。
答案 0 :(得分:1)
您可以按如下所示将大图像(从文件中)拆分为两个$i = 0
组件
就像在代码中一样,将图像从文件加载到TImage
。
然后创建另一个TBitmapSurface
,并将其大小设置为大的一半。将大图像的前半部分复制到此表面并将其分配给TBitmapSurface
。然后将后半部分复制到该表面并将其分配给Image1.Bitmap
。
Image2.Bitmap