Я имитирую рисование так же, как приложение Paint в Windows, но могу выбрать обводку после рисования.
Я рисую ломаную линию, перетаскивая мышь для рисования на холсте, но иногда внезапно получается очень прямая линия. нарисовано.
Я проверил набор точек ломаной линии, это правильно.
private Polyline _drawingLine;
private Ellipse _ellipse;
private void CanvasDrawStudentScreen_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
{
try
{
// Get point before mouse changes position
Point position = new Point(e.GetPosition(CanvasDrawStudentScreen).X, e.GetPosition(CanvasDrawStudentScreen).Y);
if (_ellipse == null)
{
_ellipse = new Ellipse()
{
Width = 10,
Height = 10,
Fill = new SolidColorBrush(Colors.Blue),
Stroke = new SolidColorBrush(Colors.Blue),
};
_ellipse.MouseDown += _ellipse_MouseDown;
CanvasDrawStudentScreen.Children.Add(_ellipse);
}
Canvas.SetLeft(_ellipse, position.X - 5);
Canvas.SetTop(_ellipse, position.Y - 5);
// Get list point when mouse move
if (e.LeftButton == MouseButtonState.Pressed)
{
_drawingLine.Points.Add(new Point(Canvas.GetLeft(_ellipse) + 5, Canvas.GetTop(_ellipse) + 5));
}
}
catch (Exception ex)
{
}
}
private void _ellipse_MouseDown(object sender, MouseButtonEventArgs e)
{
// Get point
System.Windows.Point startPosition = e.GetPosition(CanvasDrawStudentScreen);
var points = new PointCollection
{
startPosition
};
// Draw at start position
_drawingLine = new Polyline
{
Stroke = Brushes.Black,
StrokeThickness = 10,
Points = points,
};
CanvasDrawStudentScreen.Children.Add(_drawingLine);
Mouse.Capture(_ellipse);
e.Handled = true;
}
private void CanvasDrawStudentScreen_MouseUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
try
{
// Get point before mouse changes position
var position = e.GetPosition(CanvasDrawStudentScreen);
// Reset temporary drawn objects
_drawingLine = null;
_ellipse.ReleaseMouseCapture();
}
catch (Exception ex)
{
}
}
Не могли бы кто-нибудь объяснить мне, почему возникла эта проблема, и посоветовать мне, как ее исправить? Полилиния с неправильным положением на холсте