我正試圖爲我的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