Я создаю простое приложение для рисования с использованием WPF. Я столкнулся с некоторым странным поведением при использовании события mouse_up в элементе управления canvas.
Эффект, который я хочу получить, заключается в том, что когда пользователь нажимает на холст, а затем перетаскивает мышь, выбранная форма увеличивается. Когда пользователь отпускает кнопку мыши, форма остается неизменной. У меня это работает нормально с эллипсом, как таковой:
//Calculate width and height based on difference from start and current mouse positions
int width = currentXPosition < StartXPosition ? StartXPosition - currentXPosition : currentXPosition - StartXPosition;
int height = currentYPosition < StartYPosition ? StartYPosition - currentYPosition : currentYPosition - StartYPosition;
StandardEllipse ellipse = new StandardEllipse
{
Fill = new SolidColorBrush(Colors.Blue),
Stroke = new SolidColorBrush(Colors.Blue),
StrokeThickness = 2,
Width = width,
Height = height
};
//Calculate and set the starting positions of the ellipse for the drawing canvas
int left = currentXPosition < StartXPosition ? currentXPosition : StartXPosition;
int top = currentYPosition < StartYPosition ? currentYPosition : StartYPosition;
Canvas.SetLeft(ellipse, left);
Canvas.SetTop(ellipse, top);
return ellipse;
Однако, когда я пытаюсь с прямоугольником, используя точно такой же код выше, кроме установки формы на прямоугольник, событие mouse Up запускается спорадически, мне приходится нажимать кнопку мыши несколько раз, пока оно не запускает событие .
Я не уверен, есть ли какой-то конфликт между событиями mouse_move и mouse_up, но я не могу понять, как весь остальной код точно такой же, кроме возврата прямоугольника вместо эллипса. У кого-нибудь есть идеи?
Редактировать: я подумал, что это может быть тот факт, что когда я рисую прямоугольник, мышь находится строго по самому краю фигуры, поэтому я попытался установить ширину и высоту до 99%, и теперь кажется, что все в порядке ! Если у кого-то есть понимание, я был бы благодарен.