gpt4 book ai didi

delphi - 在 FMX 中加入多个图像?

转载 作者:行者123 更新时间:2023-12-02 11:02:40 25 4
gpt4 key购买 nike

在 VCL 中,这是我如何从两个图像制作单个图像,同时在它们之间创建空间:

 procedure TForm2.Button1Click(Sender: TObject);
var
p1,p2:string;
b1,b2:TBitmap;
bitmap: TBitmap;
begin
p1:='C:\Users\John\Desktop\p1.bmp';
p2:='C:\Users\John\Desktop\p2.bmp';
b1:=TBitmap.Create;
b1.LoadFromFile(p1);
b2:=TBitmap.Create;
b2.LoadFromFile(p2);
sBit:= TBitmap.Create;
try
sBit.Height:=b1.Height;
sBit.Width:=b1.Width+5+b2.Width;
sBit.Canvas.Draw(0,0,b1); //Drawing First Bitamp here
sBit.Canvas.Draw(b1.Width + 5,0,b2);// Drawing Second one
Image1.Picture.Bitmap.Assign(sBit);
finally
sBit.FreeImage;
end;
end;

现在我如何在 FMX 中绘制相同的内容?

编辑

使用 Bitmap.CopyFromBitmap 有效!!

 procedure process;
var
p1,p2: String;
b1,b2,b3:TBitmaps;
rect: TRect;
begin
//load both bitmaps to b1 and b2.
rect.Left:=0;
rect.Top:=0;
rect.Width:=b1.Width;
rect.Height:=b1.Height;
b3:= TBitmaps.Create;
b3.Height:= b1.height;
b3.widht:=b1.width;
b3.CopyFromBitmap(b1,rect,0,0);
b3.CopyFromBitmap(b2,rect,b1r.Width+5,0);
Image1.Bitmap.Assign(b3);
end;

最佳答案

在 VCL 中,您无法将 PNG 图像加载到 TBitmap 中,只能加载 BMP 图像。您必须使用 TPngImage 来代替 b1b2TPngImage 可以通过 Draw() 到 VCL TCanvas 上。

不过,FMX 的 TBitmap 支持 PNG。

在 FMX 中,在这种情况下相当于 Canvas.Draw() 是使用 TBitmap.CopyFromBitmap() :

Copies a rectangular area from a specified bitmap to the current bitmap.

然后使用Image1.Bitmap.Assign(sBit);将最终的TBitmap分配给TImage(没有 >FMX 中的 TPicture)。

关于delphi - 在 FMX 中加入多个图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56168743/

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