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#程序设计的学习有所帮助。