请问把两张图片合成一张,这个应该怎么做 第一张图片为7寸,而第二张为6寸,第二张放在第一张指定位置上 请问,能把这两张图片合成一张保存起来吗?,这个应该怎么做 ,请教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 比较简单的办法是使用TCanvas的CopyRect方法,把一张图片作为背景,然后再把另外一张图片copy到上面。如果不嫌麻烦,也可以根据象素,自己编码实现。 自己看帮助,或者到google搜索copyrect,搜索以前的帖子也可以。 http://www.tomore.com/1/42603.html图象处理的demo,能实现水印的各种效果。http://www.tomore.com/1/42601.html现成的打标和水印的例子。 //两张图像带通道融合unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls,registry,ShlObj, ComObj;type TForm1 = class(TForm) Image1: TImage; Image2: TImage; Button1: TButton; Button2: TButton; Image3: TImage; procedure BlendBmp(BkGround, FrGround: TBitmap; Left, Top, Alpha, TransR, TransG, TransB: Integer); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}procedure TForm1.BlendBmp(BkGround, FrGround: TBitmap; Left, Top, Alpha, TransR, TransG, TransB: Integer);var X, Y: Integer; PB, PF: PbyteArray; R1, R2, G1, G2, B1, B2: Integer;begin BkGround.PixelFormat := pf24bit; FrGround.PixelFormat := pf24bit; for Y := Top to BkGround.Height - 1 do begin if Y - Top > FrGround.Height - 1 then Break; PB := BkGround.ScanLine[Y]; PF := FrGround.ScanLine[Y - Top]; for X := Left to BkGround.Width - 1 do begin if X - Left > FrGround.Width - 1 then Continue; B1 := PB[X * 3]; G1 := PB[X * 3 + 1]; R1 := PB[X * 3 + 2]; B2 := PF[(X - left) * 3]; G2 := PF[(X - left) * 3 + 1]; R2 := PF[(X - left) * 3 + 2]; if (B2 = TransB) and (G2 = TransG) and (R2 = TransR) then Continue; PB[X * 3] := (B2 * Alpha + B1 * (255 - Alpha)) div 255; PB[X * 3 + 1] := (G2 * Alpha + G1 * (255 - Alpha)) div 255; PB[X * 3 + 2] := (R2 * Alpha + R1 * (255 - Alpha)) div 255; end; end;end;procedure TForm1.Button1Click(Sender: TObject);var bmp:TBitMap;begintry bmp:=TBitMap.Create ; bmp.Assign(Image1.Picture.Bitmap); BlendBmp(bmp,Image2.Picture.Bitmap ,10,10,10,255,255,255); image1.Picture.Assign(bmp); image1.Refresh;finally bmp.free;end;end;procedure TForm1.Button2Click(Sender: TObject);var bmp : TBitmap;begin bmp:=Tbitmap.Create; Image1.Picture.LoadFromFile('.\b.jpg'); bmp.Assign(image1.Picture.Graphic); Image3.Picture.Assign(bmp);// bmp.end;end. 请问怎么实现多线程读写文件,如果有源代码更好 怎么用DLL完成一个客户端的功能 在网页浏览时控件被隐藏了没有显示出来 一个妹妹的网站的宣传语,请兄弟姐妹参考一下啊。 请问什么是分组报表,Delphi中自带的QReport有分组报表功能吗? ¥¥¥¥¥关于 ‘源码空间’¥¥¥¥¥ 求delphi 5开发人员指南 电子版 这个dataset如何定义? !!!如何做个自定义的消息啊,,,,,最好给个完整的代码好了!!! csdn里到底有没有高人?!给各解答!!!!!! ADOQuery查询失效 有没有比TCanvas.StrechDraw 更好的方法放大或者缩小显示图片
http://www.tomore.com/1/42601.html现成的打标和水印的例子。
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls,registry,ShlObj, ComObj;type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
Button1: TButton;
Button2: TButton;
Image3: TImage;
procedure BlendBmp(BkGround, FrGround: TBitmap; Left, Top, Alpha,
TransR, TransG, TransB: Integer);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.BlendBmp(BkGround, FrGround: TBitmap; Left, Top, Alpha,
TransR, TransG, TransB: Integer);
var
X, Y: Integer;
PB, PF: PbyteArray;
R1, R2, G1, G2, B1, B2: Integer;
begin
BkGround.PixelFormat := pf24bit;
FrGround.PixelFormat := pf24bit;
for Y := Top to BkGround.Height - 1 do
begin
if Y - Top > FrGround.Height - 1 then
Break;
PB := BkGround.ScanLine[Y];
PF := FrGround.ScanLine[Y - Top];
for X := Left to BkGround.Width - 1 do
begin
if X - Left > FrGround.Width - 1 then
Continue;
B1 := PB[X * 3];
G1 := PB[X * 3 + 1];
R1 := PB[X * 3 + 2];
B2 := PF[(X - left) * 3];
G2 := PF[(X - left) * 3 + 1];
R2 := PF[(X - left) * 3 + 2];
if (B2 = TransB) and (G2 = TransG) and (R2 = TransR) then
Continue;
PB[X * 3] := (B2 * Alpha + B1 * (255 - Alpha)) div 255;
PB[X * 3 + 1] := (G2 * Alpha + G1 * (255 - Alpha)) div 255;
PB[X * 3 + 2] := (R2 * Alpha + R1 * (255 - Alpha)) div 255;
end;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
bmp:TBitMap;
begin
try
bmp:=TBitMap.Create ;
bmp.Assign(Image1.Picture.Bitmap);
BlendBmp(bmp,Image2.Picture.Bitmap ,10,10,10,255,255,255);
image1.Picture.Assign(bmp);
image1.Refresh;
finally
bmp.free;
end;end;procedure TForm1.Button2Click(Sender: TObject);
var
bmp : TBitmap;
begin
bmp:=Tbitmap.Create;
Image1.Picture.LoadFromFile('.\b.jpg');
bmp.Assign(image1.Picture.Graphic);
Image3.Picture.Assign(bmp);
// bmp.
end;end.