2009-09-25 4 views
5

Ich möchte einen WPF app erstellen, der die Position des Mauszeigers abtastet, um das Bild in dem Handler Mouse Ereignis aktualisiert wird. Mein ursprünglicher Gedanke war, ein GeometryDrawing zu erstellen und dann Pfade hinzuzufügen, aber ich habe Probleme damit, dies im Code zu verketten (obwohl das Xaml für GeometryDrawings einfach zu sein scheint). Was ist der einfachste Weg, um diese Dinge zu verbinden - es ist nur für das Debuggen, so dass ich nicht über Effizienz besorgt bin.einfachste Weg, eine Folge von Punkten in WPF von Code zu ziehen

+0

ich nicht ganz, was Sie ... zu tun versuchen, aber vergessen Sie nicht über InkCanvas, die Sie erlaubt auf etwas etwas "auftupfen" ... auf relativ einfache Weise. Aber InkCanvas beantwortet deine Frage nicht, also dachte ich, ich würde stattdessen kommentieren. – cplotts

Antwort

13

Wie wäre es mit Polyline?

Hier ist der 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> 

Hier ist der Code hinter:

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

Böse einfach - danke !! –

+0

Danke ... froh, dass es das war, wonach du gesucht hast. – cplotts

+0

Perfekt! Ich hatte Probleme mit den Pfad- und Geometriedaten – hoang

2

Verwenden Sie eine GeometryGroup. Dies kann mehrere untergeordnete Geometrien haben: In Ihrem Fall würden Sie eine EllipseGeometry für jeden Mausbewegungspunkt hinzufügen, der an der Mausposition zentriert ist. So etwas wie:

private GeometryGroup _allMousePoints = new GeometryGroup(); 

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

können Sie jetzt _allMousePoints als die Geometrie eines GeometryDrawing oder die Daten eines Pfad verwenden.