Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi Timage1和Timage2在Timage3内_Delphi_Image - Fatal编程技术网

Delphi Timage1和Timage2在Timage3内

Delphi Timage1和Timage2在Timage3内,delphi,image,Delphi,Image,hi是否可以将Timage1和Timage2插入Timage3中。 如果我的Timage1是100x100,我的Timage2是100x100,那么它们将并排在Timage3中的200x100内。是否可以这样做 谢谢本质上,您是在询问是否可以创建位图bm3,该位图由两个给定位图bm1和bm2并排组成。这很容易,但具体的实现取决于您的特定上下文。但原则上,你可以这样做 bm3 := TBitmap.Create; bm3.SetSize(200, 100); BitBlt(bm3.Canvas.H

hi是否可以将Timage1和Timage2插入Timage3中。 如果我的Timage1是100x100,我的Timage2是100x100,那么它们将并排在Timage3中的200x100内。是否可以这样做


谢谢

本质上,您是在询问是否可以创建位图bm3,该位图由两个给定位图bm1和bm2并排组成。这很容易,但具体的实现取决于您的特定上下文。但原则上,你可以这样做

bm3 := TBitmap.Create;
bm3.SetSize(200, 100);
BitBlt(bm3.Canvas.Handle, 0, 0, 100, 100, bm1.Canvas.Handle, 0, 0, SRCCOPY);
BitBlt(bm3.Canvas.Handle, 100, 0, 100, 100, bm2.Canvas.Handle, 0, 0, SRCCOPY);
如果bm1和bm2都是100×100平方像素。TBitmap对象

或者,如果您更喜欢使用VCL而不是Windows GDI,则可以使用

bm3.Canvas.Draw(0, 0, bm1);
bm3.Canvas.Draw(100, 0, bm2);
一个完整的例子:

var
  bm1, bm2, bm3: TBitmap;

procedure TForm1.FormCreate(Sender: TObject);
begin

  // Load bm1 and bm2
  bm1 := TBitmap.Create;
  bm1.LoadFromFile('C:\Users\Andreas Rejbrand\Desktop\red.bmp');
  bm2 := TBitmap.Create;
  bm2.LoadFromFile('C:\Users\Andreas Rejbrand\Desktop\blue.bmp');

  bm3 := TBitmap.Create;
  bm3.SetSize(200, 100);
  bm3.Canvas.Draw(0, 0, bm1);
  bm3.Canvas.Draw(100, 0, bm2);

end;

procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.Draw(0, 0, bm3);
end;
对于TImage组件 假设表单上有三个TImage控件,即Image1、Image2和Image3,并且这两个控件中首先包含图片。那你就可以了

procedure TForm1.FormClick(Sender: TObject);
var
  tmp: TBitmap;
begin

  tmp := TBitmap.Create;
  try
    tmp.SetSize(Image1.Picture.Width + Image2.Picture.Width, max(Image1.Picture.Height, Image2.Picture.Height));
    tmp.Canvas.Draw(0, 0, bm1);
    tmp.Canvas.Draw(Image1.Picture.Width, 0, bm2);
    Image3.Picture.Assign(tmp);
  finally
    tmp.Free;
  end;

end;

要让Image3并排显示Image1和Image2的图片。

是,基本原理就是这样。我将2图像添加到3图像中。但实际上我只需要打印图片3,然后免费。就像我选择图像1+2一样。谢谢