2009-09-25 7 views
5

Je voudrais créer une application WPF qui trace l'emplacement du curseur de la souris, en mettant à jour l'image dans le gestionnaire d'événements MouseMove. Ma pensée originale était de créer un GeometryDrawing, puis d'ajouter des chemins à cela, mais je suis aux prises avec la façon de câbler cela dans le code (bien que le Xaml pour GeometryDrawings semble simple). Quel est le moyen le plus simple de câbler ces choses - c'est juste pour le débogage, donc je ne suis pas préoccupé par l'efficacité.Méthode la plus simple pour dessiner une séquence de points dans WPF à partir du code

+0

Je ne pas tout à fait ce que vous essayez faire ... mais ne pas oublier InkCanvas qui vous permet "encrier" sur quelque chose ... d'une manière relativement facile. Mais InkCanvas ne répond pas à votre question, alors j'ai pensé que je ferais un commentaire à la place. – cplotts

Répondre

13

Qu'en est-il de l'utilisation de Polyline?

Voici le 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> 

Voici le code sous-jacent:

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

Wicked simple - merci !! –

+0

Merci ... content que ce soit ce que vous cherchiez. – cplotts

+0

Parfait! Je luttais avec un chemin et des données de géométrie – hoang

2

Utilisez un GeometryGroup. Cela peut avoir plusieurs géométries enfants: dans votre cas, vous ajouteriez une EllipseGeometry pour chaque point de déplacement de la souris, centré sur l'emplacement de la souris. Donc, quelque chose comme:

private GeometryGroup _allMousePoints = new GeometryGroup(); 

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

Vous pouvez maintenant utiliser _allMousePoints comme la géométrie d'un GeometryDrawing ou les données d'un chemin.

Questions connexes