2

WPF での高精度のピクセル指向の画像プログラムで驚くべき問題が発生しており、ご想像のとおり、Cursors.Crossカーソルのホットスポットがその中心にないのではないかと疑い始めています。

拡大鏡を 16x で使用し、マウスを最低の加速に設定してデバッグしています。コードはCodeProject の DrawToolsに基づいています。

拡大鏡からキャプチャされた画像

これは、Winforms で得られるのと同じカーソルですか? その場合、そのカーソルのホットスポットを確認できます。System.Windows.Input のCursorクラスには HotSpot プロパティがありません。

アップデート

誰かが回避策を探している場合に備えて、私の場合、ポイントをフィルター処理するためにデリゲートが呼び出されているので、グリッドにスナップする動作を実装できます。ポイントを 1 オフセットして補正するのは簡単なことでした。これは、カスタム カーソルを作成するよりもはるかに簡単で、外観が変更された場合でもストック カーソルを引き続き使用できるという利点があります。

4

1 に答える 1

2

はい、ホットスポットはオフセットされているという経験的な答えがあります。

キーを押すことでグラフィックモードをトリガーできるようにプログラムを修正したので、マウスを動かす必要はありません。

上のスナップショットと同じ拡大鏡ビューを使用すると、キーを押してモードを変更するだけで、カーソルが矢印と十字の間で切り替わります。

切り替えると、カーソルが描画され、黒い線が通常の矢印カーソルの左上の点に集中します。

矢印カーソルのホットスポットは、それが指しているピクセル (黒いピクセルではない) にあるため、十字カーソルのホットスポットは十字線の中心にはありません!

はぁ

于 2010-02-11T22:15:40.670 に答える