현재 캔버스에 XY 데이터를 플롯하고 곡선을 그립니다. 지금까지는 단순하고 얇은 선으로 작업했지만 두께를 늘리면 선이 곡선을 그리는 방식으로 인해 특수 효과가 발생합니다.WPF C# 선 또는 대체로 두꺼운 곡선 그리기
선이 얇을 때 잘 작동하는 멋진 부드러운 선을 보여주는 예제 이미지를 첨부했습니다. 그러나 선이 더 두꺼울 때 당신은 명백하게 문제를 볼 수 있습니다.
멋진 부드러운 선을 만들기 위해이 끝점을 연결하는 방법이 있습니까?
그렇지 않은 경우 멋진 선을 만드는 데 유용한 다른 그리기 도구가 있습니까?
캔버스에서 수천 줄의 줄 개체가 아닌 캔버스가 빠르게 복잡해지기 때문에 구현에 만족하지 않습니다. 이것은 이것을하는 끔찍한 방법처럼 보이지만 나는 아직 더 나은 방법을 찾지 못했습니다. 나는 하나의 커브 오브젝트를 생성하는 또 다른 라우트를 사용하는 편이 낫다.
언제나처럼 도움을 주실 수 있습니다.
감사합니다.
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;
}
Path 객체에 위치를 추가하는 것이 더 좋을 것이라고 생각합니다. 즉 하나의 연속 객체로 렌더링되고 획 두께를 지원합니다. – kidshaw
대신 폴리 라인을 사용해 보셨습니까? 매번 Points 컬렉션에 새 Point를 추가하기 만하면됩니까? – SuperOli
확실히 Polyline을 사용해야하며 선택적으로 [StrokeLineJoin] (http://msdn.microsoft.com/en-us/library/system.windows.shapes.shape.strokelinejoin.aspx) 속성도 설정해야합니다. – Clemens