首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Timage3中的Timage1和Timage2

Timage3中的Timage1和Timage2
EN

Stack Overflow用户
提问于 2010-07-02 06:23:51
回答 1查看 181关注 0票数 0

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

谢谢

EN

回答 1

Stack Overflow用户

发布于 2010-07-02 06:28:46

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

代码语言:javascript
复制
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平方。px。TBitmap对象。

或者,如果您更喜欢使用VCL而不是Windows GDI,则可以将两个BitBlt行替换为

代码语言:javascript
复制
bm3.Canvas.Draw(0, 0, bm1);
bm3.Canvas.Draw(100, 0, bm2);

一个完整的例子:

代码语言:javascript
复制
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,并且前两个控件中有图片。然后你可以这样做

代码语言:javascript
复制
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的图片。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3162117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档