2009-08-12 17 views
0

ボーダーコントロールでMouseEventArgs.GetPosition()を呼び出している浮動小数点値(471,326.723333333333)が表示されています。手動で数値を丸めることはできますが、整数を得るための設定があるかどうかは疑問でした。MouseEventArgs.GetPosition()から整数を取得していますか?

境界線のコントロールでSnapsToDevicePixelsをTrueに設定すると助けになると思っていましたが、おそらく無関係です。

アイデア?

ありがとうございます!

答えて

4

WPFでは、常に位置決めが浮動小数点値で返されます。丸めたい場合は、手動で行う必要があります。

これは解像度の独立性によるもので、設計上のものです。

+0

大丈夫、ありがとう! – djcouchycouch

0

WPFはデバイスに依存しないため、すべてのデバイスが同じピクセルサイズを共有するわけではないため、分数座標でMouseEventを渡すと理にかなっています(また、座標系の翻訳が全体のピクセル値)。

SnapsToDevicePixelsは、コントロールがどのように表示されるかを制御するプロパティであり、エッジと直線は、ピクセルよりも優先して優先されます。マウスイベントの処理方法(あなたも気づいたように)とは何の関係もありません。親指の一般的なルールとして

、WPFのすべてがdouble値で測定されたので、一緒に暮らす(もしチェックがおそらくとにかく同じだろう)かそう:-)

0
ような場合 intに丸め続けるのいずれか

マウスの位置は連続しています。あなたのモニター上の位置は離散的です。あなたが得ている座標値は必要なものよりも優れており、丸めは常にあなたに最も近いピクセルを与えます。基本的に、それをラウンドし、それについて心配しないでください。

関連する問題