读书人

图像的有关问题

发布时间: 2012-03-24 14:00:46 作者: rapoo

图像的问题
请问如何在一个背景图像上放一个小图像?

[解决办法]
Draw算不算?
[解决办法]

探讨
请问如何在一个背景图像上放一个小图像?

[解决办法]
准备第三个空白图像,先将背景图拷贝上,再将小图像拷贝上(位置自定),显示第三幅图,注意坐标是从左下角开始为(0,0)点。
[解决办法]
楼主,很高兴再来回答你的问题。

建一个TCanvas画布,在画布上画图像,如果你画2张以上,然后保存画布,就等于合成了。


画法也有好几种,有的是按指定的TRect区域来对一张大图缩小后画到TCanvas上的,像第一个回答你问题的人说“Draw”,这个是直接贴上去原图,不缩放。delphi自带的比较常用的方法是:

第一个:Canvas.Draw();
第二个:Canvas.StretchDraw();


如果使用GDI+,还有其它方法,不过差不多都一样,GDI+支持的图像格式多一些,比如可以将一个gif跟png合成,但处理jpg图像时如果保存则会失真,所以如果存储尽量选用bmp格式。
[解决办法]
代码:

Delphi(Pascal) code
unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs;type  TForm1 = class(TForm)    procedure FormPaint(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end;var  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormPaint(Sender: TObject);var  A,B:TBitmap;begin  if FileExists('C:\a.bmp') then    begin      A:=TBitmap.Create;      A.LoadFromFile('C:\a.bmp');      Canvas.Draw(0,0,A);      A.Free;    end;  if FileExists('C:\b.bmp') then    begin      B:=TBitmap.Create;      B.LoadFromFile('C:\b.bmp');      Canvas.Draw(50,50,B);      B.Free;    end;end;end.
[解决办法]
直接在Canvas上画。

读书人网 >.NET

热点推荐