4

我想知道是否有一种工具可以将“M 0 0 l 10 10”之类的路径数据转换为等效的线/曲线段代码。

目前我正在使用:

string pathXaml = "<Path xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" Data=\"M 0 0 l 10 10\"/>";
Path path = (Path)System.Windows.Markup.XamlReader.Load(pathXaml);

在我看来,调用 XamlParser 比显式创建线段要慢得多。然而,手动转换很多路径是非常乏味的。

4

2 回答 2

4

该程序将进行转换: http ://stringtopathgeometry.codeplex.com/

于 2010-03-15T01:19:52.260 回答
1

没有内置任何东西可以从几何迷你语言生成 C# 或 VB 代码,但您可以按如下方式创建:

  • 发出 C# 或 VB 代码以新建 PathGeometry。
  • 调用PathFigureCollection.Parse你的路径字符串。这将返回一个PathFigureCollection实例。
  • 遍历 PathFigureCollection。对于每个图:
    • 编写 C# 或 VB 代码以新建 PathFigure 对象并将其添加到 PathGeometry.Figures 集合中。
    • 遍历图窗的 Segments 集合。对于每个段,分析其类型并发出与类型相关的代码以新建适当类型的 PathSegment,设置其属性并将其添加到当前 PathFigure。

这是否比手动转换路径更乏味是只有您可以决定的事情......它可能取决于您需要处理多少种不同类型的段(即有多少不同类型的段出现在您的路径中字符串),因为您必须为 LineSegments、ArcSegments 等编写单独的代码。

编辑:感谢 Anvaka 在评论中通过提请我注意 PathFigureCollection.Parse 来简化原始答案。

于 2010-03-12T22:03:04.860 回答