Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 画布鼠标向上移动事件奇怪的行为_C#_Wpf_Events - Fatal编程技术网

C# 画布鼠标向上移动事件奇怪的行为

C# 画布鼠标向上移动事件奇怪的行为,c#,wpf,events,C#,Wpf,Events,我正在使用WPF创建一个简单的绘图应用程序。在画布控件上使用mouse\u up事件时,我遇到了一些奇怪的行为 我想要的效果是,当用户单击画布,然后拖动鼠标时,所选形状会增长。当用户释放鼠标按钮时,形状保持原样。我可以很好地处理椭圆,例如: //Calculate width and height based on difference from start and current mouse positions int width = currentXPosition

我正在使用WPF创建一个简单的绘图应用程序。在画布控件上使用mouse\u 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;
//根据开始和当前鼠标位置的差异计算宽度和高度
int width=currentXPosition
但是,当我尝试使用一个矩形时,使用与上面完全相同的代码,除了将形状设置为矩形外,鼠标向上事件偶尔会触发,我必须多次单击鼠标按钮,直到它触发事件

我不确定mouse\u move和mouse\u up事件之间是否存在冲突,但我看不出所有其他代码除了返回一个矩形而不是椭圆之外是如何完全相同的。有人有什么想法吗


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

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

这就是我所想的情况,因此我已通过像素有效地重新调整了形状的大小,现在效果如预期。我还将研究事件路由。谢谢