我只是想在c#-code中为PathFigure添加一个自定义新点。我对那些错综复杂的Path-stuff有点不知所措。
答案 0 :(得分:1)
如果您只是想从点到点画直线,可以执行以下操作。
<Path Stroke="Black" Data="M 10,10 L 5,100 50,10 70,0" />
moveto
命令。它用给定的cordinate开始一个新的子路径。 lineto
命令。它从当前点到给定的坐标绘制一条线,成为新的当前点。这意味着我们开始绘制(10,10)然后移动到(5,100)然后移动到(50,10)并最终移动到(70,0)。这些都是绝对的坐标。
如记录here所述,绘制路径的可能性要多得多。
一般来说,它们分为以下几类。
<强>通过MoveTo 强>
moveto(x y)+在给定(x,y)坐标处开始一个新的子路径。 M(大写)表示将遵循绝对坐标; m(小写)表示将遵循相对坐标。如果moveto后跟多对坐标,则后续对被视为隐式lineto命令。因此,如果moveto是相对的,则隐式lineto命令将是相对的,而如果moveto是绝对的,则是绝对的。如果相对moveto(m)作为路径的第一个元素出现,则将其视为一对绝对坐标。在这种情况下,即使初始moveto被解释为绝对移动,后续的坐标对也被视为相对坐标。
实施例
<Path Stroke="Black" Data="M 10,10" />
<Path Stroke="Black" Data="m 10,10" />
<强>了lineTo 强>
各种“lineto”命令从当前点到新点绘制直线。
从当前点到给定(x,y)坐标绘制一条线,该坐标成为新的当前点。 L(大写)表示将遵循绝对坐标; l(小写)表示将遵循相对坐标。可以指定多个坐标对来绘制折线。在命令结束时,新的当前点被设置为提供的最终坐标集。
实施例
<Path Stroke="Black" Data="M 10,10 L 20,20 M 10,10 L 30,10" />
从当前点(cpx,cpy)到(x,cpy)绘制一条水平线。 H(大写)表示将遵循绝对坐标; h(小写)表示将遵循相对坐标。可以提供多个x值(尽管通常这没有意义)。在命令结束时,新的当前点变为(x,cpy),表示x的最终值。
实施例
<Path Stroke="Black" Data="M 10,10 H 60" />
从当前点(cpx,cpy)到(cpx,y)绘制一条垂直线。 V(大写)表示将遵循绝对坐标; v(小写)表示将遵循相对坐标。可以提供多个y值(尽管通常这没有意义)。在命令结束时,新的当前点变为(cpx,y),表示y的最终值。
实施例
<Path Stroke="Black" Data="M 10,10 V 60" />
等等
要更改后面代码中的路径几何图形,可以执行此操作。
var path = MyPathElement.Data.GetFlattenedPathGeometry();
path.AddGeometry(new EllipseGeometry(new Point(200, 200), 20, 30));
path.AddGeometry(new LineGeometry(new Point(0, 0), new Point(10, 500)));
MyPathElement.Data = path;