私はたくさんの座標を持っており、それらをビットマップイメージ上の座標系として描画します。私は近所の座標を見つけた場合、私は私のCursorShape
を変更したい、近くの座標がある場合、どのようにカーソルの形状を変更できますか?
public void HighLightNearbyDots(Point _mousePosition)
{
// ..
foreach (var point in myDisplayedCoords)
{
Distance = (int)(MousePosition - point); // this gets the distance between two points and converts it to an int
if (Distance < 10)
point.Color = Colors.Red;
else
point.Color = InitialCoordColor;
}
DrawImage();
}
今:私のイメージの上に私のマウスをホバリングしながら、私は以下のルーチンを使用して、私のMousePosition
から一定Distance
内にある座標を強調したいですを手にしてください。私はその中で行うことはできませんif (Distance < NearbyCursorDistance)
;どうして?私はelse
で矢印(マイクロ秒を要する)に戻す必要があり、ユーザーはそれを見ないか、または残りの実行のために手元にとどまる。それは動作しますが、MyDisplayedCoords
が、私は今、二回反復する持っている、巨大であれば、それは多くの時間がかかり、ユーザーが意志
public void HighLightNearbyDots(Point _mousePosition)
{
//..
if (IsThereANearbyDot(MousePosition))
CursorShape = Cursors.Hand;
else
CursorShape = Cursors.Arrow;
foreach (var point in myDisplayedCoords)
{
Distance = (int)(MousePosition - point);
if (Distance < 10)
point.Color = Colors.Red;
else
point.Color = InitialCoordColor;
}
DrawImage();
}
:だから私はこの実装:
private bool IsThereANearbyDot(CoordPoint _mousePosition)
{
foreach(var point in MyDisplayedCoords)
{
if (10 > (int) (_mousePosition - point))
return true;
}
return false;
}
をこのようにそれを使用します画面に遅れがあることに注意してください。どうすればこの問題を解決できますか?
「myDisplayedCoords」の定義は何ですか? –
こんにちは!それは 'List'であり、 'CordPoint'は' x'と 'y'だけの単純な点です@VisualVincent –
あなたは何をターゲットにしていますか?Winforms、WPF、ASP ..? __Always__あなたの質問に正しくタグを付けてください! – TaW