如何控制透明窗体上面的字(100分)

  • 主题发起人 主题发起人 qiaoge
  • 开始时间 开始时间
Q

qiaoge

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了个透明窗体:
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.Brush.Style:=bsclear;
form1.BorderStyle:=bsnone;
end;

procedure tform1.CreateParams(var params:tcreateparams);
begin
inherited createparams(params);
params.ExStyle:=ws_ex_transparent;
end;
在这个窗体上面加上label,运行程序,可以看见透明窗体上的label.caption,但是
我如果更换label得到字体或者内容,结果是出现新的字体或者内容,但是原先的并没有
消除,这样就会有重影的现象,请问如何消除label的内容?

 
用InvalidateRect可不可以
 
以前DFW某大侠的代码:

var
rgn:HRGN;
begin
BeginPath(Canvas.Handle);
SetBkMode( Canvas.Handle, TRANSPARENT );
Canvas.Font.Name:= '宋体';
Canvas.Font.Size:=100;
Canvas.TextOut( 20, 20, '漂亮吗?');//用"漂亮吗?"作为form的形状
EndPath(Canvas.Handle);
rgn:= PathToRegion(Canvas.Handle);
SetWindowRgn( Handle, rgn, true );
end;
 
你现在解决了吗?可不可以给我一份,为谢。
wangzhengbo@21cn.com
 
用以下代码:
var
rgn:HRGN;
begin
BeginPath(Canvas.Handle);
SetBkMode( Canvas.Handle, TRANSPARENT );
Canvas.Font.Name:= '宋体';
Canvas.Font.Size:=100;
Canvas.TextOut( 20, 20, '漂亮吗?');//用"漂亮吗?"作为form的形状
EndPath(Canvas.Handle);
rgn:= PathToRegion(Canvas.Handle);
SetWindowRgn( Handle, rgn, true );
end;
如何改变字体颜色?
 
后退
顶部