WinForm特效之桌面上的遮罩层实现方法
本文实例讲述了WinForm特效之桌面上的遮罩层实现方法,分享给大家供大家参考之用。具体如下:
这个一个窗体特效,可以帮你了解几个windowsapi函数。
效果:windows桌面上增加一个简单的遮罩层,其中WS_EX_TRANSPARENT比较重要,它实现了鼠标穿透的功能。
主要功能代码如下:
usingSystem; usingSystem.Drawing; usingSystem.Windows.Forms; usingSystem.Runtime.InteropServices; namespaceWindowsApplication40 { publicpartialclassForm1:Form { publicForm1() { InitializeComponent(); } [DllImport("user32.dll",EntryPoint="GetWindowLong")] publicstaticexternlongGetWindowLong(IntPtrhwnd,intnIndex); [DllImport("user32.dll",EntryPoint="SetWindowLong")] publicstaticexternlongSetWindowLong(IntPtrhwnd,intnIndex,longdwNewLong); [DllImport("user32",EntryPoint="SetLayeredWindowAttributes")] privatestaticexternintSetLayeredWindowAttributes(IntPtrHandle,intcrKey,bytebAlpha,intdwFlags); constintGWL_EXSTYLE=-20; constintWS_EX_TRANSPARENT=0x20; constintWS_EX_LAYERED=0x80000; constintLWA_ALPHA=2; privatevoidForm1_Load(objectsender,EventArgse) { 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#程序设计的学习有所帮助。