Pergunta

Eu gostaria de criar um aplicativo WPF que rastreia a localização do cursor do mouse, atualizando a imagem no manipulador de eventos do Mousemove. Meu pensamento original era criar uma geometria e, em seguida, adicionar caminhos a isso, mas estou lutando com como conectar isso no código (embora o XAML para geometrydrawings pareça direto). Qual é a maneira mais fácil de conectar essas coisas - é apenas para depuração, por isso não estou preocupado com a eficiência.

Foi útil?

Solução

Que tal apenas usar a Polyline?

Aqui está o 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>

Aqui está o código atrás:

private void Canvas_MouseMove(object sender, MouseEventArgs e)
{
    polyline.Points.Add(e.GetPosition(canvas));
}

Outras dicas

Use um grupo geometrico. Isso pode ter várias geometrias infantis: no seu caso, você adicionaria uma elipsegeometria para cada ponto de movimentação do mouse, centrado no local do mouse. Então, algo como:

private GeometryGroup _allMousePoints = new GeometryGroup();

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

Agora você pode usar _AllMousePoints como geometria de uma geometrica ou os dados de um caminho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top