我正试图为我的Paint项目实现刷牙功能。笔刷打印不连贯
我的想法是想飞我移动,然后按鼠标左键在画布上按钮,我会添加一个椭圆自由刷(如MSPAINT)
任何人都可以向我解释并给我一些提示来解决这个问题吗?
这里是我的代码:
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();
}
如果将类似于Mybrush_type的'MyCanvas_MouseMove'事件移出椭圆创建,是否有任何改变? –
除了添加单独的椭圆,您可能希望添加单个多段线,然后在鼠标移动中为其“点”集合添加一个新点。 – Clemens
我试过使用Polyline作为@ Clemens的评论。但是当折线变长时,画布变得滞后。 – Duy