怎样让FORM透明,而form上面的可视组件不透明?(50分)

  • 主题发起人 主题发起人 小乖
  • 开始时间 开始时间

小乖

Unregistered / Unconfirmed
GUEST, unregistred user!
在xp下,form1.alphabandvalue可以调整窗体的透明度,但是是整个窗体(包括窗体的所有组件的透明度)
如何让窗体上的其他组件不透明,只有窗体透明呢?

谢谢
 
procedure TForm1.FormCreate(Sender: TObject);
var
FullRgn, ClientRgn, ButtonRgn: THandle;
LeftMargin,TopMargin:Integer;
Margin, X, Y: Integer;
i:integer;
begin
Margin := (Width - ClientWidth) div 2;
FullRgn := CreateRectRgn(0, 0, Width, Height);
LeftMargin := Margin;
TopMargin := Height - ClientHeight - Margin;
ClientRgn := CreateRectRgn(LeftMargin, TopMargin, LeftMargin + ClientWidth, TopMargin + ClientHeight);
CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF);

for i:= 0 to ComponentCount-1 do
begin
if not (Components is TWinControl) then continue;
if (Components as TWinControl).Parent<>self then continue;
X := LeftMargin + (Components as TWinControl).Left;
Y := TopMargin + (Components as TWinControl).Top;
ButtonRgn := CreateRectRgn(X, Y, X + (Components as TWinControl).Width, Y + (Components as TWinControl).Height);
CombineRgn(FullRgn, FullRgn, ButtonRgn, RGN_OR);
end;

SetWindowRgn(Handle, FullRgn, True);
end;
 
好像很麻烦...
 
同意上例,必须使用抠出来的办法,或使用光栅 XOR 。
 

Similar threads

回复
0
查看
804
不得闲
回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部