zoukankan      html  css  js  c++  java
  • WinForm特效:桌面上的遮罩层

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

    [csharp] view plaincopy
    1. using System;  
    2.   
    3. using System.Drawing;  
    4.   
    5. using System.Windows.Forms;  
    6.   
    7. using System.Runtime.InteropServices;  
    8.   
    9. namespace WindowsApplication40  
    10.   
    11. {  
    12.   
    13.     public partial class Form1 : Form  
    14.   
    15.     {  
    16.   
    17.         public Form1()  
    18.   
    19.         {  
    20.   
    21.             InitializeComponent();  
    22.   
    23.         }  
    24.   
    25.         [DllImport("user32.dll", EntryPoint = "GetWindowLong")]  
    26.   
    27.         public static extern long GetWindowLong(IntPtr hwnd, int nIndex);  
    28.   
    29.   
    30.   
    31.         [DllImport("user32.dll", EntryPoint = "SetWindowLong")]  
    32.   
    33.         public static extern long SetWindowLong(IntPtr hwnd, int nIndex, long dwNewLong);  
    34.   
    35.   
    36.   
    37.         [DllImport("user32", EntryPoint = "SetLayeredWindowAttributes")]  
    38.   
    39.         private static extern int SetLayeredWindowAttributes(IntPtr Handle, int crKey, byte bAlpha, int dwFlags);  
    40.   
    41.   
    42.   
    43.         const int GWL_EXSTYLE = -20;  
    44.   
    45.         const int WS_EX_TRANSPARENT = 0x20;  
    46.   
    47.         const int WS_EX_LAYERED = 0x80000;  
    48.   
    49.         const int LWA_ALPHA = 2;  
    50.   
    51.   
    52.   
    53.   
    54.   
    55.         private void Form1_Load(object sender, EventArgs e)  
    56.   
    57.         {  
    58.   
    59.             this.BackColor = Color.Silver;  
    60.   
    61.             this.TopMost = true;  
    62.   
    63.             this.FormBorderStyle = FormBorderStyle.None;  
    64.   
    65.             this.WindowState = FormWindowState.Maximized;  
    66.   
    67.             SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) | WS_EX_TRANSPARENT | WS_EX_LAYERED);  
    68.   
    69.             SetLayeredWindowAttributes(Handle, 0, 128, LWA_ALPHA );  
    70.   
    71.   
    72.   
    73.         }  
    74.   
    75.     }  
    76.   
    77. }  
  • 相关阅读:
    Unbutu之web环境部署——常用软件安装
    利用百度uaredirect.js判断手机终端并自动跳转
    原生Ajax附件上传简单实例
    shader glsl 函数图举例
    pixijs释放纹理的方法
    pixijs shader透明度设置方法
    pixijs 用canvas的方法
    threejs 解决模型缩小有黑边的解决方案
    threejs 透明模型遮挡后面模型解决方案
    javascript canvas 清除图片空白多余的方法
  • 原文地址:https://www.cnblogs.com/gc2013/p/3979419.html
Copyright © 2011-2022 走看看