程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> WinForm殊效之桌面上的遮罩層完成辦法

WinForm殊效之桌面上的遮罩層完成辦法

編輯:C#入門知識

WinForm殊效之桌面上的遮罩層完成辦法。本站提示廣大學習愛好者:(WinForm殊效之桌面上的遮罩層完成辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是WinForm殊效之桌面上的遮罩層完成辦法正文


本文實例講述了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#法式設計的進修有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved