У меня есть приложение, где вы можете рисовать на холсте (например, Paint). # Код C выглядит в основном так:Ничья линии с высоким StrokeThickness в silverlight
private void startDrawing(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
_drawingStart = e.GetPosition((UIElement)sender);
_isDrawing = true;
}
private void stopDrawing(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
_isDrawing = false;
}
private void doDrawing(object sender, System.Windows.Input.MouseEventArgs e)
{
if (_isDrawing)
{
Point current = e.GetPosition((UIElement)sender);
Line line = new Line() { X1 = _drawingStart.X, Y1 = _drawingStart.Y, X2 = current.X, Y2 = current.Y };
line.Stroke = Color;
line.StrokeThickness = StrokeThickness;
DrawingCanvas.Children.Add(line);
_drawingStart = current;
}
}
И Холст:
<Canvas x:Name="DrawingCanvas"
Grid.Row="1"
Grid.Column="1"
Background="Transparent"
MouseLeftButtonDown="startDrawing"
MouseLeftButtonUp="stopDrawing"
MouseMove="doDrawing" />
Когда StrokeThickness мал, все работает нормально. Но если я установил StrokeThickness на большее число (например, 100), линия рисуется в стиле зигзагообразного стиля и не является «твердой». Любые идеи, как этого избежать? Или, может быть, как добиться округленной линии (округлые концы линии)? Я думаю, что это решит проблему.
Было бы намного проще добавить точки в коллекцию «Точки» полилинии. См. Мой отредактированный ответ. – Clemens