请问:在使用Bitblt()时,如何使背景色透明? 我有一幅图的背景是白色的,我想用BitBlt()将它帖到另一幅图上,并使它的白色背景透明,如何做呢?谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var b1, b2: TBitmap;begin b1 := TBitmap.create; b2 := TBitmap.create; b1.loadfromfile('d:\1.bmp'); b2.loadfromfile('d:\2.bmp'); b2.Transparent := true; b2.TransparentColor := clWhite; // 或 b2.canvas.pixels[0, 0];等 b1.canvas.Draw(0, 0, b2); canvas.Draw(0, 0, b1); b1.free; b2.free;end; unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;type TForm1 = class(TForm) Image1: TImage; Image2: TImage; Button1: TButton; Image3: TImage; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end;var Form1: TForm1; b1,b2,b3,b4,b5,b6:tbitmap; trcolor:tcolor; oldcol:longint;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);begin trcolor:=clwhite; b1:=Tbitmap.Create; b2:=Tbitmap.Create; b3:=Tbitmap.Create; b4:=Tbitmap.Create; b5:=Tbitmap.Create; b6:=Tbitmap.Create; b1:=image1.Picture.Bitmap; b2:=image2.Picture.Bitmap; b3.Width:=b1.Width; b3.Height:=b1.Height; b3.Monochrome:=true; b4.Width:=b1.Width; b4.Height:=b1.Height; b4.Monochrome:=true; b5.Width:=b1.Width; b5.Height:=b1.Height; b6.Width:=b1.Width; b6.Height:=b1.Height;end;procedure TForm1.Button1Click(Sender: TObject);begin oldcol:=setbkcolor(b2.Canvas.Handle,colortorgb(trcolor)); bitblt(b3.Canvas.Handle,0,0,b3.Width,b3.Height,b2.Canvas.Handle,0,0,srccopy); setbkcolor(b2.Canvas.Handle,oldcol); bitblt(b4.Canvas.Handle,0,0,b4.Width,b4.Height,b3.Canvas.Handle,0,0,notsrccopy); bitblt(b5.Canvas.Handle,0,0,b5.Width,b5.Height,b2.Canvas.Handle,0,0,srccopy); bitblt(b5.Canvas.Handle,0,0,b5.Width,b5.Height,b4.Canvas.Handle,0,0,srcand); bitblt(b6.Canvas.Handle,0,0,b6.Width,b6.Height,b1.Canvas.Handle,0,0,srccopy); bitblt(b6.Canvas.Handle,0,0,b6.Width,b6.Height,b3.Canvas.Handle,0,0,srcand); bitblt(b6.Canvas.Handle,0,0,b6.Width,b6.Height,b5.Canvas.Handle,0,0,srcinvert); image3.Picture.Bitmap:=b6; image3.Refresh;end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);beginb1.Free;b2.Free;b3.Free;b4.Free;b5.Free;b6.Free;end;end. 请问如何在Delphi中将Excel表(*.xls)转化为html文件? 庆祝阿甘生日(穷人散分) 数据查找问题。 急!急!急!请各位大侠们帮帮忙吧 使Query1成为活动记录集(连接的是DB2) 怎么取得TreeView中右键单击处的接点 怎样实现类似OICQ的那种可以点击弹动的菜单? D7写的程序可以在Win95下运行吗? 求:源码防护的问题 Idhttp Post 登陆(看似抓包数据简单但是我很菜) 给分怎么给啊?我怎么最多只能给26分啊?我想多给点分不行吗? Form上有许多矩形区域,要使鼠标移到这些区域内时就beep,应该怎么做?
b1, b2: TBitmap;
begin
b1 := TBitmap.create;
b2 := TBitmap.create;
b1.loadfromfile('d:\1.bmp');
b2.loadfromfile('d:\2.bmp');
b2.Transparent := true;
b2.TransparentColor := clWhite; // 或 b2.canvas.pixels[0, 0];等
b1.canvas.Draw(0, 0, b2);
canvas.Draw(0, 0, b1);
b1.free;
b2.free;
end;
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
Button1: TButton;
Image3: TImage;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
b1,b2,b3,b4,b5,b6:tbitmap;
trcolor:tcolor;
oldcol:longint;
implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
begin
trcolor:=clwhite;
b1:=Tbitmap.Create;
b2:=Tbitmap.Create;
b3:=Tbitmap.Create;
b4:=Tbitmap.Create;
b5:=Tbitmap.Create;
b6:=Tbitmap.Create;
b1:=image1.Picture.Bitmap;
b2:=image2.Picture.Bitmap;
b3.Width:=b1.Width;
b3.Height:=b1.Height;
b3.Monochrome:=true;
b4.Width:=b1.Width;
b4.Height:=b1.Height;
b4.Monochrome:=true;
b5.Width:=b1.Width;
b5.Height:=b1.Height;
b6.Width:=b1.Width;
b6.Height:=b1.Height;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
oldcol:=setbkcolor(b2.Canvas.Handle,colortorgb(trcolor));
bitblt(b3.Canvas.Handle,0,0,b3.Width,b3.Height,b2.Canvas.Handle,0,0,srccopy);
setbkcolor(b2.Canvas.Handle,oldcol);
bitblt(b4.Canvas.Handle,0,0,b4.Width,b4.Height,b3.Canvas.Handle,0,0,notsrccopy);
bitblt(b5.Canvas.Handle,0,0,b5.Width,b5.Height,b2.Canvas.Handle,0,0,srccopy);
bitblt(b5.Canvas.Handle,0,0,b5.Width,b5.Height,b4.Canvas.Handle,0,0,srcand);
bitblt(b6.Canvas.Handle,0,0,b6.Width,b6.Height,b1.Canvas.Handle,0,0,srccopy);
bitblt(b6.Canvas.Handle,0,0,b6.Width,b6.Height,b3.Canvas.Handle,0,0,srcand);
bitblt(b6.Canvas.Handle,0,0,b6.Width,b6.Height,b5.Canvas.Handle,0,0,srcinvert);
image3.Picture.Bitmap:=b6;
image3.Refresh;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
b1.Free;
b2.Free;
b3.Free;
b4.Free;
b5.Free;
b6.Free;
end;end.