怎样输出透明字(50分)

  • 主题发起人 主题发起人 cemi
  • 开始时间 开始时间
C

cemi

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样在form,picture 等上面输出透明字。
 
Canvas.Brush.Style:= bsClear ;
Canvas.TextOut(x,y,'Text');
 
用label.caption输出文字
改变TLABEL的属性transparent的值为TRUE
 
>>用label.caption输出文字
>>改变TLABEL的属性transparent的值为TRUE

这个还不是透明字啊
 
哦不能看清标题了原来他要的是字透明,不是背景透明,不会!
 
字透明了,能看清楚吗?
应该是背景透明,不过字透明,也是可以的。
得看看。
 
哈哈,很有意思的一个问题。这里给你两个小技巧,一个可以输出空心字体,另外一个在你的Form上用你的字体开透明的窟窿。

1。输出空心字体:

procedure TForm1.Button1Click(Sender: TObject);
begin
Canvas.Font.Name := 'Times New Roman'; //这里的字体一定要是TrueType Font
Canvas.Font.size := 72;
Canvas.Font.style := [fsItalic,fsBold];
beginpath(canvas.handle); //开始捕获 Canvas上绘制的轮廓
SetBkMode( Canvas.Handle, TRANSPARENT );
canvas.TextOut(20,40,'Hello');
endpath(canvas.handle); //结束捕获

Canvas.Pen.Color := clred;
StrokePath(canvas.handle); //将捕获的轮廓用当前的Pen画到Canvas上
end;

2。用字体开透明窟窿:
procedure TForm1.Button1Click(Sender: TObject);
begin
canvas.Font.Name := 'Times New Roman';
canvas.Font.size := 72;
canvas.Font.style := [fsItalic,fsBold];
beginpath(canvas.handle);
SetBkMode(Canvas.Handle, TRANSPARENT ); //试验一下不用这行语句,会得到很有意思的结果
canvas.Polygon([Point(0,0),Point(Width,0),
Point(Width,Height),Point(0,Height),
Point(0,0)]); //试验不用该语句看看结果如何
canvas.TextOut(20,40,'Hello');
endpath(canvas.handle);

SetWindowRgn( Handle, PathToRegion(canvas.Handle), true );
end;




 
huizhang一出手,就知道有没有,简直酷毙了……
 
哈哈,多谢wjiachun夸奖,上面的例子能够变化成字体形状的窗体,试验一下很好玩的。
 
呵呵,我试了,另外你的TLine非常不错
 
的确有意思,呵呵
 
接受答案了.
 
huizhang:你在加拿大的卡里加尔吗?如果想认识大陆的朋友,我有一个同学在那里
可以介绍你们认识.
 
后退
顶部