如何使form透明

limitanger 2002-06-25 02:55:41
如何使form透明
...全文
100 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljy_17 2002-06-25
  • 打赏
  • 举报
回复
同意luoweicaisd(笑三少) 的回答!
ZengXi 2002-06-25
  • 打赏
  • 举报
回复
对对对,我说道就是那个setlayar...函数,不过只能在nt下用
flyants 2002-06-25
  • 打赏
  • 举报
回复
var
FullRgn, ClientRgn, CtlRgn : THandle;

procedure TForm1.DoInvisible;
var
AControl : TControl;
A, Margin, X, Y, CtlX, CtlY : Integer;
begin
Margin := ( Width - ClientWidth ) div 2;
//First, get form region
FullRgn := CreateRectRgn(0, 0, Width, Height);
//Find client area region
X := Margin;
Y := Height - ClientHeight - Margin;
ClientRgn := CreateRectRgn( X, Y, X + ClientWidth, Y + ClientHeight );
//'Mask' out all but non-client areas
CombineRgn( FullRgn, FullRgn, ClientRgn, RGN_DIFF );

//Now, walk through all the controls on the form and 'OR' them
// into the existing Full region.
for A := 0 to ControlCount - 1 do begin
AControl := Controls[A];
if ( AControl is TWinControl ) or ( AControl is TGraphicControl )
then with AControl do begin
if Visible then begin
CtlX := X + Left;
CtlY := Y + Top;
CtlRgn := CreateRectRgn( CtlX, CtlY, CtlX + Width, CtlY + Height );
CombineRgn( FullRgn, FullRgn, CtlRgn, RGN_OR );
end;
end;
end;
//When the region is all ready, put it into effect:
SetWindowRgn(Handle, FullRgn, TRUE);
end;

以前做的,不过比较复杂,看看好用不,也多请教。
观石 2002-06-25
  • 打赏
  • 举报
回复
procedure Tmainfrm.FormCreate(Sender: TObject);
begin
mainfrm.style:=bsclear;
end;
wyj1974 2002-06-25
  • 打赏
  • 举报
回复
给你代码:
const
WS_EX_LAYERED = $80000;
LWA_ALPHA = $2;

在formshow中
var
Longi:Longint;
begin
Longi:=GetWindowLong(Handle, GWL_EXSTYLE);
Longi := Longi Or WS_EX_LAYERED;
SetWindowLong (handle, GWL_EXSTYLE, Longi);
SetLayeredWindowAttributes (handle, 0, 180, LWA_ALPHA);
end;
观石 2002-06-25
  • 打赏
  • 举报
回复
同意 zhouzm(不可能错过你) 不过是
在form1.create中
procedure Tmainfrm.FormCreate(Sender: TObject);
begin
mainfrm.Brush.Style:=bsClear;
// ^
// |
//你的窗体
end;
dext 2002-06-25
  • 打赏
  • 举报
回复
有一个alpha...的函数!不好意思!在网吧!
你找找吧!FLASHGET就用它!
WnEunfn 2002-06-25
  • 打赏
  • 举报
回复
如用D6,则设form的Alphablend为true,改Alphablendvalue的大小
:這樣的只有2000/XP下有效
superljj 2002-06-25
  • 打赏
  • 举报
回复
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.Brush.Style:=bsClear;

end;
dext 2002-06-25
  • 打赏
  • 举报
回复
手头没有现成资料! 好像以Alpha开头!
silvermoon 2002-06-25
  • 打赏
  • 举报
回复
把窗体的transparentcolorvalue和窗体的本身color设成一个颜色,然后把transparentcolor设为true!运行一下就知道了!
观石 2002-06-25
  • 打赏
  • 举报
回复
非常简单,只要在form1.create 中设
brush.style:=bsclear;即可,如:
procedure TForm1.FormCreate(Sender: TObject);
begin
brush.Style :=bsclear;
end;
zhouzm 2002-06-25
  • 打赏
  • 举报
回复
更正:
实现方法如下:
Form.Brush.Style:=bsClear;
就可以使form透明了!
zhouzm 2002-06-25
  • 打赏
  • 举报
回复
实现方法如下:
form1.Brush.Clear;
就可以使form透明了!
luoweicaisd 2002-06-25
  • 打赏
  • 举报
回复
如用D6,则设form的Alphablend为true,改Alphablendvalue的大小
luoweicaisd 2002-06-25
  • 打赏
  • 举报
回复
如用D6,则设form的Alphablend为true,改Alphablendvalue的大小
ZengXi 2002-06-25
  • 打赏
  • 举报
回复
如果在nt下,有个api可以设置,名字我忘了,效果超级好,两form上的控件都透明,而且透明度可以调整,就是不记得了 :(

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧