WinForm特效:桌面上的遮罩层

一个窗体特效,帮你了解几个windows api函数.效果:windows桌面上增加一个简单的遮罩层,其中WS_EX_TRANSPARENT 比较重要,它实现了鼠标穿透的功能。

[csharp] view plaincopy

  1. using System;
  2. using System.Drawing;
  3. using System.Windows.Forms;
  4. using System.Runtime.InteropServices;
  5. namespace WindowsApplication40
  6. {
  7. public partial class Form1 : Form
  8. {
  9. public Form1()
  10. {
  11. InitializeComponent();
  12. }
  13. [DllImport("user32.dll", EntryPoint = "GetWindowLong")]
  14. public static extern long GetWindowLong(IntPtr hwnd, int nIndex);
  15. [DllImport("user32.dll", EntryPoint = "SetWindowLong")]
  16. public static extern long SetWindowLong(IntPtr hwnd, int nIndex, long dwNewLong);
  17. [DllImport("user32", EntryPoint = "SetLayeredWindowAttributes")]
  18. private static extern int SetLayeredWindowAttributes(IntPtr Handle, int crKey, byte bAlpha, int dwFlags);
  19. const int GWL_EXSTYLE = -20;
  20. const int WS_EX_TRANSPARENT = 0x20;
  21. const int WS_EX_LAYERED = 0x80000;
  22. const int LWA_ALPHA = 2;
  23. private void Form1_Load(object sender, EventArgs e)
  24. {
  25. this.BackColor = Color.Silver;
  26. this.TopMost = true;
  27. this.FormBorderStyle = FormBorderStyle.None;
  28. this.WindowState = FormWindowState.Maximized;
  29. SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) | WS_EX_TRANSPARENT | WS_EX_LAYERED);
  30. SetLayeredWindowAttributes(Handle, 0, 128, LWA_ALPHA );
  31. }
  32. }
  33. }
时间: 2024-10-10 21:16:40

WinForm特效:桌面上的遮罩层的相关文章

C#使用Windows API实现桌面上的遮罩层(鼠标穿透)

C#实现实现桌面上的遮罩层(鼠标穿透)主要通过一下几个API函数来实现:GetWindowLong,SetWindowLong,SetLayeredWindowAttributes.其中有一个Windows 消息 WS_EX_TRANSPARENT 比较重要,它实现了鼠标穿透的功能. 下面来看看完整的实现代码: using System; using System.Drawing; using System.Windows.Forms; using System.Runtime.InteropS

Winform应用程序实现通用遮罩层

Winform应用程序实现通用遮罩层 在WEB上,我们在需要进行大数据或复杂逻辑处理时,由于耗时较长,一般我们会在处理过程中的页面上显示一个半透明的遮罩层,上面放个图标或提示:正在处理中...等字样,这样用户体验就比较好了,然而如果在Winform客户端程序,通常遮罩层的处理就显得不那么简单或不那么好看,而我今天要说明的是,我实现的这个Winform通用遮罩层,却可以实现类似WEB上的遮罩层,既可以透明,而且还可以显示动态图片以及文字,那如何实现的呢,我现在一一讲解. 首先要明确我们要实现的效果

Winform应用程序实现通用遮罩层二

之前先后发表过:<Winform应用程序实现通用遮罩层>.<Winform应用程序实现通用消息窗口>,这两款遮罩层其实都是基于弹出窗口的,今天为大家分享一个比较简单但界面相对友好的另一种实现方案,废话不多说,直接进入主题. 一.实现思路(解决问题顺序): 透明遮罩: 1.实现可设置透明的Panel控件(MaskPanel): 2.Panel控件(MaskPanel)能够覆盖父容器(一般是当前窗体form对象)客户区区域(即:与父容器客户区区域大小相同),并处于最上层,保证父容器上的

有关遮罩层

像 ul >li>a>img 这种情况,需要在鼠标放到图片上显示遮罩层,鼠标离开图片隐藏遮罩层时,注意遮罩层的覆盖问题,也就是触发事件的元素不能是img,否则鼠标放到img上触发事件,遮罩层显示,这时候遮罩层会盖住img从而导致鼠标离开事件不执行或有错. 可以把触发事件的元素设置为遮罩层的父级元素,比如把遮罩层设置为a的子元素,a为触发事件元素,这样就不会出现遮罩层覆盖对事件触发的影响

HTML按钮实现!!!文件上传,遮罩层

按钮上传文件: <input type="file" /> file的意思为提交 每个游览器的显示方式都不一样哦 遮罩层:   设两个id <style type="text/css"> #bg{ display: none; position: absolute; top: 0%; left: 0%; width: 100%; height: 100%; background-color: black; z-index:1001; opac

遮罩层小特效

今天学了一个遮罩层的特效,主要用在网页里面注册页面和登陆页面的使用: <style> * { margin: 0px; padding: 0px; } #mask { width: 100%; /*height: 500px;*/ background-color: black; opacity: 0.5; position: fixed; top: 0px; left: 0px; z-index: 990; } #login { width: 300px; height: 200px; po

简单的CSS3鼠标滑过图片标题和遮罩层动画特效

这是一款使用CSS3制作的简单的鼠标滑过图片标题和遮罩层动画特效.该鼠标滑过特效通过 CSS3transitions 和 transform 属性,在鼠标滑过图片时制作遮罩层和图片标题动画效果. 在线预览   源码下载 使用方法 HTML结构 该鼠标滑过图片特效的HTML结构非常简单:使用一个<div>元素作为图片遮罩层,在里面放置图片的描述信息. 1 2 3 4 5 6 7 8 <img src="img/01.jpg" alt=""> &

12种炫酷的CSS3鼠标滑过图片遮罩层动画特效

InContent是一款效果非常炫酷的CSS3鼠标滑过图片遮罩层动画特效.这组特效共有12种不同的鼠标滑过图片效果,分为滑动.旋转和翻转3大类.它可以在支持CSS3 transition和transform属性的现代浏览器中正常工作. 在线预览   源码下载 使用方法 使用该CSS3鼠标滑过图片遮罩层动画特效需要在页面中引入由SASS编译的sass-compiled.css文件或由LESS编译的less-compiled.css文件. <link rel="stylesheet"

在浏览器窗口上添加一个遮罩层

背景 在web2.0中,页面弹窗是一个很常见的交互方式,这样既可以避免不必要的页面跳转,也可以改进界面的布局和可交互性. 但是,浏览器原生的弹窗函数(alert, confirm, prompt)有着很大的局限性,主要是它们的展现UI一来很不美观,二来也不够灵活,因此,我们经常需要自行定义弹窗函数. 当我们要实现一个模式弹窗时(模式弹窗,即是说出现弹窗时,页面其它地方不可点击),通常的做法是用一个div将整个页面窗口遮挡住. 实现 下面,我们一步步地实现一种较为简洁有效的遮罩层: Step 1: