5

マウス カーソルの位置を追跡し、MouseMove イベント ハンドラーで画像を更新する WPF アプリを作成したいと思います。私の最初の考えは、GeometryDrawing を作成し、それにパスを追加することでしたが、コードでこれを接続する方法に苦労しています (ただし、GeometryDrawings の Xaml は簡単​​に見えます)。このようなものを配線する最も簡単な方法は何ですか-デバッグのためだけなので、効率は気にしません。

4

2 に答える 2

13

ポリラインを使用するのはどうですか?

xamlは次のとおりです。

<Window
    x:Class="CursorLine.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1"
>
    <Canvas x:Name="canvas" Background="#00FFFFFF" MouseMove="Canvas_MouseMove">
        <Polyline x:Name="polyline" Stroke="DarkGreen" StrokeThickness="3"/>
    </Canvas>
</Window>

背後にあるコードは次のとおりです。

private void Canvas_MouseMove(object sender, MouseEventArgs e)
{
    polyline.Points.Add(e.GetPosition(canvas));
}
于 2009-09-25T23:47:26.227 に答える
2

GeometryGroupを使用します。これには複数の子ジオメトリを含めることができます。この場合、マウスの位置を中心として、マウスの移動ポイントごとにEllipseGeometryを追加します。だから次のようなもの:

private GeometryGroup _allMousePoints = new GeometryGroup();

void OnMouseMove(...)
{
  _allMousePoints.Children.Add(
    new EllipseGeometry {
      Center = mouseLocation,
      RadiusX = 3,
      Radius Y = 3
    });
}

_allMousePointsをGeometryDrawingのジオメトリまたはパスのデータとして使用できるようになりました。

于 2009-09-25T21:50:18.930 に答える