2009-09-25 8 views
5

Chciałbym utworzyć aplikację WPF, która śledzi położenie kursora myszy, aktualizując obraz w obsłudze zdarzenia MouseMove. Początkowo myślałem o stworzeniu GeometryDrawing, a następnie dodaniu do niego ścieżek, ale mam problem z tym, jak połączyć to w kod (chociaż Xaml dla GeometryDrawings wydaje się prosty). Jaki jest najłatwiejszy sposób na połączenie tych rzeczy - służy tylko do debugowania, więc nie przejmuję się wydajnością.Najprostszy sposób rysowania sekwencji punktów w WPF z kodu

+0

I nie dość, co chce zrobić ... ale nie zapominaj o InkCanvas który pozwala do "atramentu" na coś ... w stosunkowo łatwy sposób. Ale InkCanvas nie odpowiada na twoje pytanie, więc pomyślałem, że zamiast tego skomentuję. – cplotts

Odpowiedz

13

A co z używaniem Polilinii?

Oto 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> 

Oto kod za:

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

Wicked simple - thanks !! –

+0

Dzięki ... Cieszę się, że to było to, czego szukałeś. – cplotts

+0

Idealny! Walczyłem z danymi Path and Geometry – hoang

2

Użyj GeometryGroup. Może to mieć wiele geometrii potomka: w twoim przypadku można dodać elipsęGeometry dla każdego punktu ruchu myszy, wyśrodkowanego na miejscu myszy. Więc coś takiego:

private GeometryGroup _allMousePoints = new GeometryGroup(); 

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

Można teraz używać _allMousePoints jako geometrię GeometryDrawing lub dane ścieżki.

Powiązane problemy