非常に特殊な機能を備えたカーソルを実装する必要があります。
- それはアニメ化する必要があります
- n 秒後に自動的にクリックされるため、アニメーションはクリックが発生したときのユーザーへのフィードバックです
- 一部のコントロールにスナップする必要があります
- アプリケーションの外で動作する必要があります
これまでのアプローチ:
- 私のWPFコントロールをビットマップにレンダリングし、それからカーソル構造を作成し、user32.dll/SetSystemCursorを使用して設定します
- プロ
- カーソルは実際のカーソルであるため、マウスの後に遅延はありません
- コン
- 特に絶対入力デバイスと相対入力デバイスがあり、常にマウス位置をリセットするか、user32.dll/ClipCursor (System.Windows.Forms.Cursor.Clip は同じことを行います) を使用する必要があるため、スナップは非常に困難ですが、スナップされたカーソルは常にスナップ位置を中心に揺れる (逃げようとして、再びリセットされる....)
- 私が使用するコードは、ランダムな時間の後に奇妙な例外をスローするため、現在のコードは非常に不安定に見えます
- 自分のカーソルを最大化、最上位、allowtransparent、windowstyle = none、非表示のウィンドウにレンダリングし、手動でマウスの後にカーソルを移動します (Canvas.SetLeft(cursor, MousePosition.X) など)。
- プロ
- スナップは(簡単に)行うことができます
- コン
- マウスをクリックしてカーソルをヒットすると、カーソルがクリックされ、ウィンドウの向こうではありません
- ディスパッチャーバックグラウンドループで常にマウス位置をポーリングすることは、私にはあまり美しくありません
2番目のアプローチを解決するには、マウスをクリックできるように、ホットスポットに少なくとも1つの透明なピクセルが必要です...それは私には本当の解決策のようには思えません...
アイデアは誰ですか?
編集:問題を示すためのサンプルソース...:
マウスを固定位置にスナップする際の問題を示すアプリとソースの例: ClipIt.rar
ランダムな時間の後に失敗するアプリとソースの例 - 自己描画カーソルの設定: TryOwnCur.rar
http://sourcemonk.com/Cursorの下にあります。