我需要实现一个具有一些非常具体的功能的游标:
- 它必须是动画的
- 因为在 n 秒后它会自动点击 - 所以当点击发生时动画是用户的反馈
- 它必须捕捉到我们的一些控件
- 它必须在我们的应用程序之外工作
到目前为止的方法:
- 将我的 WPF 控件渲染为位图,从中制作光标结构并使用 user32.dll/SetSystemCursor 进行设置
- 专业版
- 光标在鼠标之后没有延迟,因为它是真正的光标
- CON
- 捕捉非常困难,特别是因为我们有绝对和相对输入设备,我必须一直重置鼠标位置或使用 user32.dll/ClipCursor(System.Windows.Forms.Cursor.Clip 也是如此),但捕捉的光标是总是在捕捉位置周围晃动(试图逃跑,再次重置......)
- 我使用的代码在随机时间后抛出奇怪的异常 - 所以我当前的代码似乎很不稳定
- 将我自己的光标渲染为最大化的、最顶部的、允许透明的、windowstyle=none、不可见的窗口,并在鼠标之后手动移动光标(如 Canvas.SetLeft(cursor, MousePosition.X))
- 专业版
- 可以(轻松)完成捕捉
- CON
- 当鼠标点击并点击光标时,光标被点击而不是超出的窗口
- 一直在调度程序背景循环中轮询鼠标位置对我来说似乎不是很漂亮
要解决第二种方法,我的光标必须在热点中至少有一个透明像素,以便鼠标可以点击……这对我来说似乎不是一个真正的解决方案……
有什么想法吗?
编辑:一些示例源来显示问题...:
示例应用程序和源来显示将鼠标捕捉到固定位置的问题:ClipIt.rar
随机时间后失败的示例应用程序和源 - 设置自绘光标:TryOwnCur.rar
可以在以下位置找到:http: //sourcemonk.com/Cursor