C# Winform 窗体美化(五、鼠标穿透)
生活随笔
收集整理的這篇文章主要介紹了
C# Winform 窗体美化(五、鼠标穿透)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
五、鼠標穿透
以前在玩射擊游戲的時候,狙擊槍的設定一般是開鏡才有準星,所以想是不是可以自己造一個默認準星出來,思路是現在窗口上畫一個準星,然后把窗體其他區域都透明,然后設置鼠標穿透;
結果是:
注意:
全屏的游戲,窗口是不能最前的,可以先把游戲設置成窗口模式(尷尬),一般游戲切換全屏的按鍵是“alt+enter”。
代碼如下:
private const uint WS_EX_LAYERED = 0x80000; private const int WS_EX_TRANSPARENT = 0x20; private const int GWL_STYLE = (-16); private const int GWL_EXSTYLE = (-20); private const int LWA_ALPHA = 0;[DllImport("user32", EntryPoint = "SetWindowLong")] private static extern uint SetWindowLong( IntPtr hwnd, int nIndex, uint dwNewLong );[DllImport("user32", EntryPoint = "GetWindowLong")] private static extern uint GetWindowLong( IntPtr hwnd, int nIndex );[DllImport("user32", EntryPoint = "SetLayeredWindowAttributes")] private static extern int SetLayeredWindowAttributes( IntPtr hwnd, int crKey, int bAlpha, int dwFlags );/// <summary> /// 設置窗體具有鼠標穿透效果 /// </summary> public void SetPenetrate() {this.TopMost = true;SetWindowLong(this.Handle, GWL_EXSTYLE, WS_EX_TRANSPARENT | WS_EX_LAYERED);SetLayeredWindowAttributes(this.Handle, 0, 100, LWA_ALPHA); }擴展閱讀:如何在Windows下使一個窗口在全屏游戲時置頂?
總結
以上是生活随笔為你收集整理的C# Winform 窗体美化(五、鼠标穿透)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQLServer 2012重启服务后,
- 下一篇: JSP JAVA 自定义 错误页面(40