欢迎来到代码驿站!

.NET代码

当前位置:首页 > 软件编程 > .NET代码

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

时间:2021-05-16 09:39:21|栏目:.NET代码|点击:

本文实例讲述了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#程序设计的学习有所帮助。

上一篇:C#短时间内产生大量不重复的随机数

栏    目:.NET代码

下一篇:C#飞行棋小程序设计分析

本文标题:WinForm特效之桌面上的遮罩层实现方法

本文地址:http://www.codeinn.net/misctech/122875.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有