首页 > 编程 > C# > 正文

WinForm特效之桌面上的遮罩层实现方法

2020-01-24 02:24:09
字体:
来源:转载
供稿:网友

本文实例讲述了WinForm特效之桌面上的遮罩层实现方法,分享给大家供大家参考之用。具体如下:

这个一个窗体特效,可以帮你了解几个windows api函数。

效果:windows桌面上增加一个简单的遮罩层,其中WS_EX_TRANSPARENT 比较重要,它实现了鼠标穿透的功能。

主要功能代码如下:

using System; using System.Drawing; using System.Windows.Forms; using System.Runtime.InteropServices; namespace WindowsApplication40 {   public partial class Form1 : Form   {     public Form1()     {       InitializeComponent();     }     [DllImport("user32.dll", EntryPoint = "GetWindowLong")]     public static extern long GetWindowLong(IntPtr hwnd, int nIndex);      [DllImport("user32.dll", EntryPoint = "SetWindowLong")]     public static extern long SetWindowLong(IntPtr hwnd, int nIndex, long dwNewLong);      [DllImport("user32", EntryPoint = "SetLayeredWindowAttributes")]     private static extern int SetLayeredWindowAttributes(IntPtr Handle, int crKey, byte bAlpha, int dwFlags);      const int GWL_EXSTYLE = -20;     const int WS_EX_TRANSPARENT = 0x20;     const int WS_EX_LAYERED = 0x80000;     const int LWA_ALPHA = 2;       private void Form1_Load(object sender, EventArgs e)     {       this.BackColor = Color.Silver;       this.TopMost = true;       this.FormBorderStyle = FormBorderStyle.None;       this.WindowState = FormWindowState.Maximized;       SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) | WS_EX_TRANSPARENT | WS_EX_LAYERED);       SetLayeredWindowAttributes(Handle, 0, 128, LWA_ALPHA );      }   } }

希望本文所述对大家C#程序设计的学习有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表