画布鼠标向上事件奇怪的行为

时间:2011-12-23 17:02:10

标签: c# wpf events

我正在使用WPF创建一个简单的绘图应用程序。在canvas控件上使用mouse_up事件时,我遇到了一些奇怪的行为。

我想要的效果是当用户点击画布然后拖动鼠标时,所选择的形状会增长。当用户释放鼠标按钮时,形状保持原样。我用椭圆工作得很好,如下:

 //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_move和mouse_up事件之间是否存在冲突,但我无法看到除了返回矩形而不是椭圆之外所有其他代码是如何完全相同的任何人有什么想法吗? / p>

编辑:我认为可能是因为当我绘制矩形时,鼠标严格地位于形状的边缘,所以我尝试将宽度和高度设置为99%,现在看起来工作正常!如果有人有任何见解,那么我将不胜感激。

1 个答案:

答案 0 :(得分:0)

在椭圆上,拖动角位于形状的边界之外,在拖动角落在形状边界内的矩形上。可能是鼠标事件没有正确地路由到画布。