안녕하세요. 존재하는 파란색 곡선 경로를 기반으로 빨간색 곡선 경로를 그립니다. Refer this diagram 그리고 코드에서 베 지어를 사용하여 빨간색 경로를 만들려고합니다. 아래는 제 코드입니다.경로를 기반으로 베 지어 커브 경로를 그리는 방법은 몇 점을 그렸습니까?
내 포인트를 정의하고 전달합니다.
newFinal.Insert(0, nodeBegin); //add in starting node at beginning drawing purpose
Point[] AToB = new[] { new Point(48, 242), new Point(-35, 250), new Point(48, 350) };
Point[] AToE = new[] { new Point(48, 242), new Point(150, 240), new Point(135, 245) };
Point[] BToG = new[] { new Point(48, 350), new Point(150, 240), new Point(135, 340) };
Point[] BToA = new[] { new Point(48, 350), new Point(-35, 250), new Point(48, 242) };
Point[] EToA = new[] { new Point(135, 245), new Point(150, 240), new Point(48, 242) };
Point[] GToB = new[] { new Point(135, 340), new Point(105, 370), new Point(48, 350) };
for (i = 0; i < newFinal.Count - 1; i++)
{
switch (newFinal[i])
{
case 'a':
if (newFinal[i + 1] == 'b')
drawBezier(AToB[0], AToB[1],AToB[2]);
else if (newFinal[i + 1] == 'e')
drawBezier(AToE[0], AToE[1], AToE[2]);
break;
case 'b':
if (newFinal[i + 1] == 'a')
drawBezier(BToA[0], BToA[1], BToA[2]);
else if (newFinal[i + 1] == 'g')
drawBezier(BToG[0], BToG[1], BToG[2]);
break;
case 'e':
if (newFinal[i + 1] == 'a')
drawBezier(EToA[0], EToA[1], EToA[2]);
break;
case 'g':
if (newFinal[i + 1] == 'b')
drawBezier(GToB[0], GToB[1], GToB[2]);
break;
}
}
이 내가 내 지점을 통과 곳이다 :
private void drawBezier(Point point1, Point point2, Point point3) //This is the class to draw the blue curve path
{
BezierSegment bezier = new BezierSegment()
{
Point1 = point1,
Point2 = point2,
Point3 = point3,
IsStroked = true
};
PathFigure figure = new PathFigure();
figure.Segments.Add(bezier);
Path path = new Path();
path.Stroke = Brushes.Red;
path.Data = new PathGeometry(new PathFigure[] { figure });
MyCanvas.Children.Add(path);
Storyboard sb = new Storyboard();
PointAnimation pointAnim = new PointAnimation();
pointAnim.From = bezier.Point1;
pointAnim.To = bezier.Point3;
Storyboard.SetTarget(pointAnim,path);
Storyboard.SetTargetProperty(pointAnim,new PropertyPath("Data.Figures[2].Segments[2].Point3"));
}
그러나 이상한 곡선에 그려진 빨간색 경로. 예를 들어, a를 b로 그릴 때, this happened 또 다른 예는 b를 b에 그려야합니다. this happened 첫 번째 점에서 곡선을 그릴 수없는 것과 같습니다. 누구든지 나를 도울 수 있습니까?