在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;
答案 0 :(得分:2)
在VCL中,您不能将PNG图像加载到TBitmap
中,而只能加载BMP图像。对于TPngImage
和b1
,您将不得不使用b2
。可以TPngImage
Draw()
到VCL TCanvas
上。
FMX的TBitmap
支持PNG。
在FMX中,在这种情况下,等效于Canvas.Draw()
的是使用TBitmap.CopyFromBitmap()
:
将矩形区域从指定的位图复制到当前位图。
然后使用Image1.Bitmap.Assign(sBit);
将最终的TBitmap
分配给TImage
(FMX中没有TPicture
)。