画笔打印不连续

时间:2015-11-04 16:23:45

标签: c# wpf

我正在尝试为我的Paint项目实现Brushing功能。

我的想法是每当我移动并在画布上按鼠标左键时,我会在自由笔刷上添加一个椭圆(如MSPaint)

一切都很好,直到我快速移动鼠标。 enter image description here>>画笔打印分开。

有人可以向我解释并给我一些提示来解决这个问题吗?

这是我的代码:

Point _startPoint, _endPoint;
    private void MyCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
                    _startPoint = e.GetPosition(MyCanvas);
                    Ellipse MyBrush_Ellipse = new Ellipse();
                    MyBrushing.CreateBrush(_cl1, _cl2, ref MyBrush_Ellipse, Mybrush_type);

                    Canvas.SetTop(MyBrush_Ellipse, _startPoint.Y);
                    Canvas.SetLeft(MyBrush_Ellipse, _startPoint.X);
    }

    private void MyCanvas_MouseMove(object sender, MouseEventArgs e)
    {
             _endPoint = e.GetPosition(MyCanvas);
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                        Ellipse MyBrush_Ellipse = new Ellipse();
                        MyBrushing.CreateBrush(_cl1, _cl2, ref MyBrush_Ellipse, Mybrush_type);

                        Canvas.SetTop(MyBrush_Ellipse, _endPoint.Y);
                        Canvas.SetLeft(MyBrush_Ellipse, _endPoint.X);

                        MyCanvas.Children.Add(MyBrush_Ellipse);
                        MyCanvas.CaptureMouse();
                        _myUndoRedo.PushToStackForBrush(MyBrush_Ellipse);
          }
    }

     private void MyCanvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
                 MyCanvas.ReleaseMouseCapture();
    }

1 个答案:

答案 0 :(得分:1)

鼠标不会在屏幕上不断移动。当从A移动到B更快时,鼠标实际上不会在屏幕的每个部分之间移动。

要解决您的问题,请绘制一条线,而不是在鼠标位置绘制一个椭圆。因此,您必须存储鼠标之前的点。移动后,从存储的最后一个已知点到实际点绘制一条线。