老鸟分析VB.NET窗体透明度
创始人
2024-06-10 14:50:15
0

#t#VB.NET还是比较常用的,于是我研究了一下VB.NET窗体透明度渐变效果:我们还是来看一下在VB6中的实现,在这里拿出来和大家分享一下,希望对大家有用。

使用这个函数,可以轻松控制VB.NET窗体透明度。按照微软的要求,透明窗体在创建时应使用WS_EX_LAYERED参数(用CreateWindowEx),或者在创建后设置该参数(用SetWindowLong),我选用后者。

SetLayeredWindowAttributes函数,其中hwnd是透明窗体的句柄,crKey为颜色值,bAlpha是透明度,取值范围是[0,255],dwFlags是透明方式,可以取两个值:当取值为 LWA_ALPHA时,crKey参数无效,bAlpha参数有效;当取值为LWA_COLORKEY时,bAlpha参数有效而窗体中的所有颜色为 crKey的地方将变为透明。

  1. Const LWA_COLORKEY = &H1  
  2. Const LWA_ALPHA = &H2  
  3. Const GWL_EXSTYLE = (-20)  
  4. Const WS_EX_LAYERED = &H80000  
  5. PrivateDeclareFunction GetWindowLong Lib "user32" Alias "GetWindowLongA" 
    (ByVal hWnd AsLong, ByVal nIndex AsLong) AsLong  
  6. PrivateDeclareFunction SetWindowLong Lib "user32" Alias "SetWindowLongA" 
    (ByVal hWnd AsLong, ByVal nIndex AsLong, ByVal dwNewLong AsLong) AsLong  
  7. PrivateDeclareFunction SetLayeredWindowAttributes Lib "user32" 
    (ByVal hWnd AsLong, ByVal crKey AsLong, ByVal bAlpha AsByte, ByVal dwFlags AsLong) AsLong  
  8. PrivateSub Form_Load()  
  9. Dim Ret AsLong  
  10. 'Set the window style to 'Layered'  
  11. Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)  
  12. RetRet = Ret Or WS_EX_LAYERED  
  13. SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret  
  14. 'Set the opacity of the layered window to 128  
  15. '我们可以设置这个数值来控制透明程度  
  16. SetLayeredWindowAttributes Me.hWnd, 0, 128, LWA_ALPHA  
  17. EndSub 

在VB.NET中,太简单了!系统为窗体提供了Opacity属性,来确定窗体的不透明和透明程度,0%为透明,100%为不透明。以下程序通过循环显示VB.NET窗体透明度过程,为了让大家看清楚其变化,在循环过程中使用了System.Threading.Thread.Sleep来停顿。

  1. PrivateSub button1_Click(ByVal sender As System.Object, 
    _ByVal e As System.EventArgs) Handles button1.Click  
  2. '窗体的透明度渐变过程  
  3. button1.Enabled = False 
  4. Dim I AsDouble  
  5. For I = 0.01 To 1 Step 0.01  
  6. Me.Opacity = I 
  7. System.Windows.Forms.Application.DoEvents()  
  8. System.Threading.Thread.Sleep(5)  
  9. Next  
  10. Me.Opacity = 1 
  11. button1.Enabled = True 
  12. EndSub 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
规避非法攻击 用好路由器远程管... 单位在市区不同位置设立了科技服务点,每一个服务点的员工都通过宽带路由器进行共享上网,和单位网络保持联...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
范例解读VB.NET获取环境变... VB.NET编程语言的使用范围非常广泛,可以帮助开发人员处理各种程序中的需求,而且还能对移动设备进行...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...