Witam,
Prosta aplikacja: klikamy w dowolny punkt [Canvas], pokazuje się linia, która z punktu (100, 100) śledzi położenie kursora, dopóki LPM jest wciśnięty.
Linia jest dodawana programowo.
"Z założenia" alikacja wygląda tak:
private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
System.Windows.Point position = e.GetPosition(this);
double pX = position.X;
double pY = position.Y;
x1 = pX;
y1 = pY;
Line path = new Line();
path.Visibility = System.Windows.Visibility.Visible;
path.StrokeThickness = 2;
path.Stroke = System.Windows.Media.Brushes.Black;
path.X1 = x0;
path.Y1 = y0;
path.X2 = x1;
path.Y2 = y1;
Canvas1.Children.Add(path);
mouse_pressed = true;
}
private void Window_MouseUp(object sender, MouseButtonEventArgs e)
{
System.Windows.Point position = e.GetPosition(this);
double pX = position.X;
double pY = position.Y;
x0 = pX;
y0 = pY;
}
private void Window_MouseMove(object sender, MouseEventArgs e)
{
/*
if (mouse_pressed == true)
{
System.Windows.Point position = e.GetPosition(this);
double pX = position.X;
double pY = position.Y;
path.X2 = pX; // błąd <<< "path" does not exist in current contnt
path.Y2 = pY; // błąd <<< "path" does not exist in current contnt
}
*/
}
Aplikacja działa zgodnie z oczekiwaniami, tj. każde kliknięcie tworzy ścieżkę, jednak nie wiem jak zaimplementować [mouse_move] tak, aby korygowała położenie lini wywołanej przez inne zdarzenie (aby linia śledziła kursor do czasu zwolnienia [PPM]:
MouseDown -> wywołuje (rysuje) linię (ostatni punkt, położenie myszy)
MouseMove -> modyfikuje ostatnio narysowaną linię (wywołaną przez zdarzenie 1), dopóki nie popuszczamy PPM,
MouseUp -> przypisuje nowe punkty orientacyjne