这里使用了nowpaper的一个例子:
我新建了一个WPF 3.5项目,将里面的代码添加了几个方法,就可以在桌面上使用这个效果。
主要原理是用了一个鼠标的钩子的引用确定鼠标所在的指针位置。
我修改了里面的一个类:Colorful_FollowMouse
具体代码如下
public class Colorful_FollowMouse : Colorful
{
public Colorful_FollowMouse()
{
MouseKeyboardLibrary.MouseHook mouseHook = new MouseKeyboardLibrary.MouseHook();
mouseHook.MouseMove += new forms.MouseEventHandler(mouseHook_MouseMove);
mouseHook.Start();
}
void mouseHook_MouseMove (object sender,forms.MouseEventArgs e)
{
addDotToGroup(e.X, e.Y);
}
}
里边的MouseKeyboardLibrary类是一个鼠标的钩子(点此下载),然后设置一下MainWindow的最大化和AllowTransparent的属性。然后设置所有背景颜色为透明。另外还有一个鼠标穿透窗口的类:
//鼠标穿透相关
public static class MousePierce
{
const int WS_EX_TRANSPARENT = 0x00000020;
const int GWL_EXSTYLE = -20;
[DllImport("user32.dll")]
static extern int SetWindowLong(IntPtr hwnd, int index, int newStyle);
[DllImport("user32.dll")]
static extern int GetWindowLong(IntPtr hwnd, int index);
public static void setMousePierce(Window win)
{
var hwnd = new WindowInteropHelper(win).Handle;
int extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle | WS_EX_TRANSPARENT);
}
}