程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Winform完成鼠標可穿透的窗體镂空後果

Winform完成鼠標可穿透的窗體镂空後果

編輯:C#入門知識

Winform完成鼠標可穿透的窗體镂空後果。本站提示廣大學習愛好者:(Winform完成鼠標可穿透的窗體镂空後果)文章只能為提供參考,不一定能成為您想要的結果。以下是Winform完成鼠標可穿透的窗體镂空後果正文


明天找到一個名叫LICEcap的錄屏軟件,錄制界面是如許的:

  這個炫酷的空心窗口就是鏡頭,調劑好年夜小,然後瞄准須要錄制的處所按下Record便可以生成gif了。

  臥槽太NB了我也要做一個!

  依據StackOverflow站的提醒(在這裡),我們須要應用一個在Windows2000及以後平台可用的,用以完成不規矩窗體的分層窗口API (SetLayerWindowAttributes).依據百度我們先須要應用一個名為SetWindowLong的Win32 API來把窗體設定為分層窗體。

  為了在.NET平台中挪用Win32 API,我們須要溫習下P/Invoke的內容:

1.甚麼是P/Invoke

  P/Invoke 的全稱是Platform Invoke。.是一種在托管平台下應用非托管dll中導出函數的一種挪用機制。

2.若何用P/Invoke

  它長如許:

[DllImportAttribute("user32.dll", EntryPoint="SetCursorPos")]
public static extern bool SetCursorPos(int X, int Y) ;

  順次指明挪用的dll稱號,導出函數名,然後界說成C#尺度的辦法就好了。

  所以,我們須要: 翻開百度百科,搜刮API稱號,檢查宿主dll,抄來函數原型,依照解釋界說須要的常量。

  不,我找到了更便利的方法:翻開pinvoke.net,搜刮API稱號:

  依照裡邊的C#Signature復制過去,再依據Sample Code改改,就OK了。

  然後在Visual Studio裡新建一個Winform項目,在主窗口代碼裡如許寫:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.TopMost = true;
SetWindowLong(this.Handle, GWL_EXSTYLE, WS_EX_LAYERED);
SetLayeredWindowAttributes(this.Handle, 65280, 255, LWA_COLORKEY);
}
private const uint WS_EX_LAYERED = 0x80000;
private const int GWL_EXSTYLE = -20;
private const int LWA_COLORKEY = 1;
[DllImport("user32", EntryPoint = "SetWindowLong")]
private static extern uint SetWindowLong(IntPtr hwnd,int nIndex,uint dwNewLong);
[DllImport("user32", EntryPoint = "SetLayeredWindowAttributes")]
private static extern int SetLayeredWindowAttributes(IntPtr hwnd,int crKey,int bAlpha,int dwFlags);
}

  先應用SetWindowLong將窗口界說為分層窗體,然後挪用SetLayeredWindowAttributes辦法設置通明。

  個中第二個參數crKey為一個int型的色彩值,轉換方法為(int)(0xRRGGBB),本例中Dec(0x00FF00)=65280為綠色。

  第四個參數為通明方法,本例中應用LWA_COLORKEY = 1,表現將該窗口色彩為crKey的部門都設置為通明。

  是以響應地,我們須要在窗口設計器中畫一個色彩為綠色的方塊。本例中應用了一個PictureBox,並設置了配景色彩。

   F5運轉,後果如圖:

   能想到的用途之一就是,包裝幾個不相干的內部法式為一個全體.

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