图像的问题
请问如何在一个背景图像上放一个小图像?
[解决办法]
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上画。