2015-01-26 3 views
2

Моя цель - создать инструмент линии в программе, чтобы при нажатии кнопки пользователь мог выбрать две точки, используя левую кнопку мыши, и после второй щелчок, прямая линия должна быть проведена между выбранными точками.Лучший способ обнаружить щелчок мышью после нажатия кнопки в WPF

Или что-то похожее на инструмент линии на краске Microsoft, если это проще. Пока пользователь может нарисовать линию.

Код, который я до сих пор минимален. Проблема в том, что я обнаружил щелчок мыши, находясь внутри функции ниже. Первоначально я использовал время цикл с

if (MouseButton.Left == MouseButtonState.Pressed) 

для проверки кликов, однако я только что создал бесконечный цикл, как условие никогда не было удовлетворено.

Моя только другая идея заключается в том, чтобы использовать событие в функции LineTool_Click такие как drawingCanvas.MouseDown, но я понятия не имею, как это будет работать как:/ Я новичок в C#/WPF.

// When the LineTool button is clicked..... 
private void LineTool_Click(object sender, RoutedEventArgs e) 
{ 
    Point startPoint = new Point(0,0); 
    Point endPoint = new Point(0, 0); 
} 

ответ

0

Самый простой вариант, вероятно, для хранения старт/конечных точек вне метода, а затем проверить в методе, если они были захвачены в плен или нет:

// Store these outside of the method 
Point lastPoint = new Point(0,0); 
bool captured = false; 

// When the LineTool button is clicked..... 
private void LineTool_Click(object sender, MouseButtonEventArgs e) 
{ 
    if (!this.captured) 
    { 
     this.captured = true; 
     this.lastPoint = e.GetPosition(this.LineTool); 
     return; 
    } 

    // Okay - this is the second click - draw our line: 
    this.captured = false; // Make next click "start" again 
    Point endPoint = e.GetPosition(this.LineTool); 

    // draw from this.lastPoint to endPoint 
} 
+0

Я мог бы быть будучи действительно глупым здесь, но я получил эту ошибку: нет перегрузки для 'LineTool_Click' соответствует делегату 'System.Windows.RoutedEventHandler' – user2874417

+0

@ user2874417 Вы упомянули, что вы выполняете обработчик MouseDown, а не обработчик кликов. Вам нужно будет адаптироваться, если вы хотите использовать click;) –

+0

Чтобы уточнить, у меня есть кнопка в углу, которую при нажатии я бы хотел, чтобы она входила в режим рисования, где пользователь просто щелкает дважды, и появляется строка между кликов. Кнопка называется LineTool, а LineTool_Click запускается при первом нажатии кнопки. – user2874417

Смежные вопросы