如何使form的透明(100分)

  • 主题发起人 主题发起人 tingz
  • 开始时间 开始时间
T

tingz

Unregistered / Unconfirmed
GUEST, unregistred user!

有以下程序,本意是想使form透明,但移动form后始终原有的边框未
擦除,请各位帮忙看看:
procedure wmerasebkgnd(var msg:Tmessage);message wm_erasebkgnd;
var
rc:trect;
begin
brush.style:=bsclear;
rc:=getclientrect();
invalidaterect(handle,@rc);
inherited;
end;
 
这种方法太不‘经典’。
应该用creatergn方法创建,本论坛讨论多次。看看已答问题
1.如何实现不规则控件,或是透明image?
2.如何制作一个透明FORM!
 
好象是在Formr Create事件中加入 Action:=Clear 这条语句。
我记不得了,你试看。
但这种方法不是真正的透盟,或许用API作不规则窗体的方法可以作的到。
不妨试试。
 
让窗体bynone不行么?
试一下用控件,网上有的是
 
在OnCreate事件中添加两行:
procedure TForm1.FormCreate(Sender: TObject);
begin
......
Form1.Brush.Style := bsClear;
Form1.BorderStyle := bsNone
......
end;
 
tingz,
你的程序中的这一句:
invalidaterect(handle,@rc);
怎么只有两个参数?
程序改成如下:
procedure TForm1.wmerasebkgnd(var msg:Tmessage);
var
rc:trect;
begin
brush.style:=bsclear;
rc:=getclientrect();
<font color="#ff0000">invalidaterect(handle,@rc,false);</font>
inherited;
end;

问题解决!
 

liuge:
对不起,我把函数敲掉了一点点,当时实际上
最后一个参数,我既用过true,也用过false。
谢谢各位的指点,特别是menxin,提供的线索。
 

Similar threads

I
回复
0
查看
553
import
I
I
回复
0
查看
614
import
I
I
回复
0
查看
774
import
I
I
回复
0
查看
1K
import
I
后退
顶部