100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 制作桌面精灵(动态桌面)——鼠标跟随的粒子效果

制作桌面精灵(动态桌面)——鼠标跟随的粒子效果

时间:2022-04-21 23:00:16

相关推荐

制作桌面精灵(动态桌面)——鼠标跟随的粒子效果

这里使用了nowpaper的一个例子:

Silverlight C# 游戏开发:绚丽的粒子特效-颜色粒子(一) 我新建了一个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);

}

}

在MainWindow的Loaded事件里面使用这个类的setMousePierce()方法。可以使鼠标穿透窗口。不过问题还是CPU占用比较高,不知道有没有什么好的解决方法。希望有高手可以提供一下。 代码下载

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。