制作桌面精灵(动态桌面)——鼠标跟随的粒子效果
生活随笔
收集整理的這篇文章主要介紹了
制作桌面精灵(动态桌面)——鼠标跟随的粒子效果
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
這里使用了nowpaper的一個例子:
Silverlight C# 游戲開發(fā):絢麗的粒子特效-顏色粒子(一)
我新建了一個WPF 3.5項(xiàng)目,將里面的代碼添加了幾個方法,就可以在桌面上使用這個效果。
主要原理是用了一個鼠標(biāo)的鉤子的引用確定鼠標(biāo)所在的指針位置。
我修改了里面的一個類: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類是一個鼠標(biāo)的鉤子(點(diǎn)此下載),然后設(shè)置一下MainWindow的最大化和AllowTransparent的屬性。然后設(shè)置所有背景顏色為透明。另外還有一個鼠標(biāo)穿透窗口的類:
//鼠標(biāo)穿透相關(guān)
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()方法。可以使鼠標(biāo)穿透窗口。不過問題還是CPU占用比較高,不知道有沒有什么好的解決方法。希望有高手可以提供一下。
代碼下載
總結(jié)
以上是生活随笔為你收集整理的制作桌面精灵(动态桌面)——鼠标跟随的粒子效果的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑文件如何加密电脑文档如何加密
- 下一篇: tplunk路由器怎么关机重启路由器如何