Canvas Mouse Up Event Странное поведение - PullRequest
0 голосов
/ 23 декабря 2011

Я создаю простое приложение для рисования с использованием 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%, и теперь кажется, что все в порядке ! Если у кого-то есть понимание, я был бы благодарен.

1 Ответ

0 голосов
/ 23 декабря 2011

На эллипсе угол перетаскивания находится за пределами формы, на прямоугольнике угол перетаскивания находится в пределах формы. Возможно, событие мыши неправильно направлено на холст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...