将点添加到PathFigure(WPF)

时间:2017-06-24 13:36:33

标签: c# wpf

我只是想在c#-code中为PathFigure添加一个自定义新点。我对那些错综复杂的Path-stuff有点不知所措。

1 个答案:

答案 0 :(得分:1)

如果您只是想从点到点画直线,可以执行以下操作。

<Path Stroke="Black" Data="M 10,10 L 5,100 50,10 70,0" />
  • M是绝对moveto命令。它用给定的cordinate开始一个新的子路径。
  • L代表绝对lineto命令。它从当前点到给定的坐标绘制一条线,成为新的当前点。

这意味着我们开始绘制(10,10)然后移动到(5,100)然后移动到(50,10)并最终移动到(70,0)。这些都是绝对的坐标。

enter image description here

如记录here所述,绘制路径的可能性要多得多。

一般来说,它们分为以下几类。

  • 通过MoveTo
  • 了lineTo
  • 曲线
  • closepath
  • ...

<强>通过MoveTo

  • M(绝对)
  • m(相对)
  

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”命令从当前点到新点绘制直线。

  • L(绝对)
  • l(亲属)
  

从当前点到给定(x,y)坐标绘制一条线,该坐标成为新的当前点。 L(大写)表示将遵循绝对坐标; l(小写)表示将遵循相对坐标。可以指定多个坐标对来绘制折线。在命令结束时,新的当前点被设置为提供的最终坐标集。

实施例

<Path Stroke="Black" Data="M 10,10 L 20,20 M 10,10 L 30,10" />

enter image description here

  • H(绝对)
  • h(亲属)
  

从当前点(cpx,cpy)到(x,cpy)绘制一条水平线。 H(大写)表示将遵循绝对坐标; h(小写)表示将遵循相对坐标。可以提供多个x值(尽管通常这没有意义)。在命令结束时,新的当前点变为(x,cpy),表示x的最终值。

实施例

<Path Stroke="Black" Data="M 10,10 H 60" />

enter image description here

  • V(绝对值)
  • v(relative)
  

从当前点(cpx,cpy)到(cpx,y)绘制一条垂直线。 V(大写)表示将遵循绝对坐标; v(小写)表示将遵循相对坐标。可以提供多个y值(尽管通常这没有意义)。在命令结束时,新的当前点变为(cpx,y),表示y的最终值。

实施例

<Path Stroke="Black" Data="M 10,10 V 60" />

enter image description here

等等

要更改后面代码中的路径几何图形,可以执行此操作。

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;