【问题标题】:Canvas Mouse Up Event Strange Behaviour画布鼠标向上事件奇怪的行为
【发布时间】:2011-12-24 01:18:38
【问题描述】:

我正在使用 WPF 创建一个简单的绘图应用程序。在画布控件上使用 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 事件之间是否存在冲突,但除了返回一个矩形而不是椭圆之外,我看不出所有其他代码是如何完全相同的。有人有什么想法吗?

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

【问题讨论】:

    标签: c# wpf events


    【解决方案1】:

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

    【讨论】:

    • 这就是我认为的情况,所以我通过一个像素有效地重新调整了形状的大小,现在可以按预期工作。我也会看看事件路由。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多