如何实现在Bitmap(已经load进了背景图)上输入文字,而且文字的背景是透明的,最后能保存位图?(100分)

  • 主题发起人 主题发起人 xishi
  • 开始时间 开始时间
X

xishi

Unregistered / Unconfirmed
GUEST, unregistred user!
如何实现在Bitmap(已经load进了背景图)上输入文字,而且文字的背景是透明的,
最后能保存位图?比如:
bitmap1:=TBitmap.Create ;

try
Bitmap1.LoadFromFile('f:/test.bmp');
Canvas.Brush.Bitmap := Bitmap1;
Canvas.FillRect(ClientRect);
finally
Form1.Canvas.Brush.Bitmap := nil;
bitmap1.Canvas.textout(100,100,'爱情');//如何把这几个字的背景设为透明?
bitmap1.SaveToFile('f:/test1.bmp'); //现在的底色是白色,把背景遮住,不好看
Bitmap1.Free;
end;

 
Bitmap1.Canvas.Brush.Style := bsClear;
 
var bitmp1,bitmap2:tbitmap;//bitmap2为临时变量;
intrect:trect;
a:string;
begin
a:='asdfasfa';
bitmap1:=tbitmap.create;
bitmap2:=tbitmap.create;
bitmap1.width:=100;
bitmap1.height:=100;
bitmap2.width:=bitmap1.width;
bitmap2.height:=bitmap1.height;
bitmap1.canvas.CopyMode:=cmsrcand;
intrect:=rect(0,0,bitmap1.width,bitmap1.height);
bitmap2.canvas.brush.color:=clwhite;
bitmap2.canvas.fillrect(intrect);
bitmap2.canvas.TextRect(intrect,5,5,a);
bitmap1.canvas.CopyRect(intrect,bmpp.canvas,rect(0,0,bitmap1.width,bitmap1.height));
bitmap1.canvas.savefile('c:/tt.bmp');//保存文件
bitmap1.free;
bitmap2.free;
end;
 
天真真是够天真啊,哈哈。一句话就完了:见JohnsonGuo之回答。
 
TRANSPARENT
 
可以利用分层技术
 
正解:SetBkMode
 
干脆在Image上加TLabel,设Caption:='XXX' TRANSPARENT:=TRUE;
 
同意CAT。YY的意见。这样来得快!也方便,最好是运行时创建!
 
>>干脆在Image上加TLabel,设Caption:='XXX' TRANSPARENT:=TRUE;
人家要能保存位图。
上面的两种方法都可以。
 
用SetBkMode

但是我要做成Memo一样的多行编辑器,又要透明怎么办呢?
 
用RichEdit98
我以前作过,可以有底图,可以透明
 
多人接受答案了。
 
这个问题可以利用一个API函数,如下:
只需要在
bitmap1.Canvas.textout(100,100,'爱情');
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
774
import
I
后退
顶部