Не ловится событие мыши на inkCanvas

196
29 ноября 2017, 23:21

Задача - нарисовать линию по выбору соответствующей кнопки на панели инструментов. В своём коде я пробую реализовать следующий алгоритм: кликаем LMB на рабочую область, переносим курсор в другое место, удерживая LMB нажатой, отпускаем LMB - рисуется линия по координатам места, где кнопка была нажата и где отпущена. Объявляю глобальные переменные:

Point EndPosition;
Point StartPosition;

Код:

private void inkCanvas1_MouseDown(object sender, MouseButtonEventArgs e) 
    {
        FrameworkElement fe = sender as FrameworkElement;
        StartPosition = e.MouseDevice.GetPosition(fe);
    }
private void Line_Click(object sender, RoutedEventArgs e)
    {
        linePressed = true;
    }
private void inkCanvas1_MouseUp(object sender, MouseButtonEventArgs e)
    {
        FrameworkElement fe = sender as FrameworkElement;
        EndPosition = e.MouseDevice.GetPosition(fe);
        if (linePressed)
        {
            this.inkCanvas1.EditingMode = InkCanvasEditingMode.Ink;
            Line l = new System.Windows.Shapes.Line();
            l.X1 = StartPosition.X;
            l.X2 = EndPosition.X;
            l.Y1 = StartPosition.Y;
            l.Y2 = EndPosition.Y;
            l.Stroke = Brushes.Red;
            l.StrokeThickness = 5;
            inkCanvas1.Children.Add(l);
        }
    }

В результате линии рисуются следующим образом:

Как можно это исправить?

P.S Пробовал выводить координаты EndPosition в момент рисования в консоли, но безуспешно.

Answer 1

Установите в InkCanvas свойство EditingMode="None" и не меняйте его в коде. В режиме EditingMode="Ink" элемент не отслеживает событие MouseDown

READ ALSO
Копирование ссылки в память из dataGridView

Копирование ссылки в память из dataGridView

Есть dataGridView, в котором выведена БДХочу, чтобы при двойном щелчке по ячейке открывалось изображение, которое хранится как ссылка в ячейке

270
Изменение фона приложения на MetroFramework

Изменение фона приложения на MetroFramework

Как изменить фоновый цвет приложения WinForms сделанное с помощью фреймворка MetroFramework ?

249
Не могу найти ошибку (Unity3d)

Не могу найти ошибку (Unity3d)

Как должно все работатьПри свайпах по панели должна вращаться камера

365