欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Winform實(shí)現(xiàn)鼠標(biāo)可穿透的窗體鏤空效果

 更新時(shí)間:2016年10月09日 10:05:35   作者:ifdog  
這篇文章主要介紹了Winform實(shí)現(xiàn)鼠標(biāo)可穿透的窗體鏤空效果的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

今天找到一個(gè)名叫LICEcap的錄屏軟件,錄制界面是這樣的:

  這個(gè)炫酷的空心窗口就是鏡頭,調(diào)整好大小,然后對(duì)準(zhǔn)需要錄制的地方按下Record就可以生成gif了。

  臥槽太NB了我也要做一個(gè)!

  根據(jù)StackOverflow站的提示(在這里),我們需要使用一個(gè)在Windows2000及之后平臺(tái)可用的,用以實(shí)現(xiàn)不規(guī)則窗體的分層窗口API (SetLayerWindowAttributes).根據(jù)百度我們先需要使用一個(gè)名為SetWindowLong的Win32 API來(lái)把窗體設(shè)定為分層窗體。

  為了在.NET平臺(tái)中調(diào)用Win32 API,我們需要復(fù)習(xí)下P/Invoke的內(nèi)容:

1.什么是P/Invoke

  P/Invoke 的全稱是Platform Invoke。.是一種在托管平臺(tái)下使用非托管dll中導(dǎo)出函數(shù)的一種調(diào)用機(jī)制。

2.如何用P/Invoke

  它長(zhǎng)這樣:

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

  依次指明調(diào)用的dll名稱,導(dǎo)出函數(shù)名,然后定義成C#標(biāo)準(zhǔn)的方法就行了。

  所以,我們需要: 打開百度百科,搜索API名稱,查看宿主dll,抄來(lái)函數(shù)原型,按照說(shuō)明定義需要的常量。

  不,我找到了更方便的辦法:打開pinvoke.net,搜索API名稱:

  按照里邊的C#Signature復(fù)制過(guò)來(lái),再根據(jù)Sample Code改改,就OK了。

  然后在Visual Studio里新建一個(gè)Winform項(xiàng)目,在主窗口代碼里這樣寫:

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將窗口定義為分層窗體,然后調(diào)用SetLayeredWindowAttributes方法設(shè)置透明。

  其中第二個(gè)參數(shù)crKey為一個(gè)int型的顏色值,轉(zhuǎn)換方式為(int)(0xRRGGBB),本例中Dec(0x00FF00)=65280為綠色。

  第四個(gè)參數(shù)為透明方式,本例中使用LWA_COLORKEY = 1,表示將該窗口顏色為crKey的部分都設(shè)置為透明。

  因此相應(yīng)地,我們需要在窗口設(shè)計(jì)器中畫一個(gè)顏色為綠色的方塊。本例中使用了一個(gè)PictureBox,并設(shè)置了背景顏色。

   F5運(yùn)行,效果如圖:

   能想到的用處之一就是,包裝幾個(gè)不相關(guān)的外部程序?yàn)橐粋€(gè)整體.

相關(guān)文章

  • C#自定義基于控制臺(tái)的Timer實(shí)例

    C#自定義基于控制臺(tái)的Timer實(shí)例

    這篇文章主要介紹了C#自定義基于控制臺(tái)的Timer實(shí)現(xiàn)方法,可以簡(jiǎn)單模擬timer控件的相關(guān)功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • C#生成PDF文件流

    C#生成PDF文件流

    這篇文章主要為大家詳細(xì)介紹了C#生成PDF文件流的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • C#中SequenceEqual的具體使用

    C#中SequenceEqual的具體使用

    SequenceEqual是LINQ擴(kuò)展方法之一,用于比較兩個(gè)序列(如數(shù)組、列表等)的元素是否相等,本文就來(lái)介紹一下SequenceEqual的具體使用,感興趣的可以了解一下
    2024-01-01
  • C#畫筆使用復(fù)合數(shù)組繪制單個(gè)矩形的方法

    C#畫筆使用復(fù)合數(shù)組繪制單個(gè)矩形的方法

    這篇文章主要介紹了C#畫筆使用復(fù)合數(shù)組繪制單個(gè)矩形的方法,涉及C#使用畫筆繪制圖形的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C#中時(shí)間的幾種格式轉(zhuǎn)換方法

    C#中時(shí)間的幾種格式轉(zhuǎn)換方法

    有時(shí)候我們要對(duì)C#時(shí)間進(jìn)行轉(zhuǎn)換,達(dá)到不同的顯示效果,這里簡(jiǎn)單介紹下,方便需要的朋友
    2013-09-09
  • vs代碼段快捷鍵設(shè)置(圖文)

    vs代碼段快捷鍵設(shè)置(圖文)

    學(xué)習(xí)代碼快捷鍵是程序員必學(xué)知識(shí)點(diǎn),會(huì)使用代碼快捷在程序開發(fā)過(guò)程中會(huì)提高開發(fā)效率,下面小編給大家整理些有關(guān)vs代碼段快捷鍵設(shè)置的技巧,需要的朋友可以參考下
    2015-08-08
  • c#顯示當(dāng)前在線人數(shù)示例

    c#顯示當(dāng)前在線人數(shù)示例

    這篇文章主要介紹了c#顯示當(dāng)前在線人數(shù)的示例,需要的朋友可以參考下
    2014-02-02
  • C#簡(jiǎn)單創(chuàng)建和刪除目錄的方法

    C#簡(jiǎn)單創(chuàng)建和刪除目錄的方法

    這篇文章主要介紹了C#簡(jiǎn)單創(chuàng)建和刪除目錄的方法,實(shí)例分析了C#使用CreateDirectory及Delete方法簡(jiǎn)單創(chuàng)建及刪除目錄的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-08-08
  • Unity Shader實(shí)現(xiàn)線框效果的制作步驟

    Unity Shader實(shí)現(xiàn)線框效果的制作步驟

    最近比較忙,今天抽空給大家分享一篇文章,關(guān)于Unity Shader實(shí)現(xiàn)線框效果,本文給大家分享詳細(xì)制作步驟,通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-06-06
  • C#使用DES和AES實(shí)現(xiàn)加密解密功能示例

    C#使用DES和AES實(shí)現(xiàn)加密解密功能示例

    這篇文章主要介紹了C#使用DES和AES實(shí)現(xiàn)加密解密功能,結(jié)合具體實(shí)例形式分析了C#實(shí)現(xiàn)DES與AES的加密解密功能實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-06-06

最新評(píng)論