delphi 透明窗体 控件不透明

delphi9年前 (2016)发布 admin
526 0

方法一

//窗体全透明,但窗体上的控件不透明  
procedure TForm1.Button1Click(Sender: TObject);  
 Var  
   frmRegion, tempRegion: HRGN;  
   i: Integer;  
   Arect: TRect;  
 Begin  
   frmRegion := 0;  
   For I:= 0 To ControlCount - 1 Do Begin  
     aRect := Controls[i].BoundsRect;  
     OffsetRect( aRect, clientorigin.x - left, clientorigin.y - top );  
     tempRegion := CreateRectRgnIndirect( aRect );  
     If frmRegion = 0 Then  
       frmRegion := tempRegion  
     Else Begin  
       CombineRgn( frmRegion, frmRegion, tempRegion, RGN_OR );  
       DeleteObject( tempRegion );  
     End;  
   End;  
   tempregion :=  
     CreateRectRgn( 0, 0, Width,  
                    GetSystemMetrics( SM_CYCAPTION )+  
                    GetSystemMetrics( SM_CYSIZEFRAME )+  
                    GetSystemMetrics( SM_CYMENU ) * Ord(Menu <> Nil));  
   
   CombineRgn( frmRegion, frmRegion, tempRegion, RGN_OR );  
   DeleteObject( tempRegion );  
   SetWindowRgn( handle, frmRegion, true );  
 End;  

转自http://paulfzm.iteye.com/blog/1835285
方法二
设置以下属性即可实现透明窗体显示文字:

===========================================
设置窗体属性:

BorderStyle 属性设置为 bsNone
Color 属性设置为 clWhite(白色:窗体背景色)
TransparentColor 属性设置为 true
TransparentColorValue 属性设置为 clWhite(白色:透明颜色)

//以上两颜色需一致才能使窗体透明
===========================================
设置Label属性:

Color 属性设置为 clWhite(白色:透明颜色)
Font.Color 属性设置为 clRed(非透明颜色即可)
Transparent 属性设置为 true
===========================================

© 版权声明

相关文章