我目前正在画布上绘制XY数据并用它绘制曲线。到目前为止,它很简单并适用于细线,但是当我增加厚度时,由于线条被绘制成曲线的方式而产生一种特殊效果。
我附加了一个示例图像,该图像显示了一条很好的平滑线,当线很细时它可以正常工作。但是当线条较粗时,您可以明显看出问题。
有没有办法连接这些端点以形成一条漂亮的流畅线?
如果没有,是否有另一个绘图工具可用于创建一个好的线?
我对这个实现并不满意,因为画布很快就会被画布上数百甚至数千个线对象弄得乱七八糟。这似乎是一种可怕的方式,但我还没有找到更好的方法。我更愿意选择另一条创建单曲线对象的路线。
任何帮助都会一如既往地受到赞赏。
谢谢!
Point previousPoint;
public void DrawLineToBox(DrawLineAction theDrawAction, Point drawPoint)
{
Line myLine = new Line();
myLine.Stroke = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0));
myLine.StrokeThickness = 29;
if(theDrawAction == DrawLineAction.KeepDrawing)
{
myLine.X1 = previousPoint.X; //draw from this point
myLine.Y1 = previousPoint.Y;
}
else if(theDrawAction == DrawLineAction.StartDrawing)
{
myLine.X1 = drawPoint.X; //draw from same point
myLine.Y1 = drawPoint.Y;
}
myLine.X2 = drawPoint.X; //draw to this point
myLine.Y2 = drawPoint.Y;
canvasToDrawOn.Children.Add(myLine); //add to canvas
previousPoint.X = drawPoint.X; //set current point as last point
previousPoint.Y = drawPoint.Y;
}
答案 0 :(得分:3)
尝试添加以下两行:
myLine.StrokeStartLineCap = PenLineCap.Round;
myLine.StrokeEndLineCap = PenLineCap.Round;
此外,您确实应该使用Polylne或Path对象来执行您当前正在执行的操作。就个人而言,我总是将StrokeStartLineCap和StrokeEndLineCap设置为PenLineCap.Round,将StrokeLineJoin设置为PenLineJoin.Round,用于我使用的Polyline对象。