我想知道是否有一个工具可以将“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 比显式创建线段慢得多。然而,手动转换大量路径是非常繁琐的。

有帮助吗?

解决方案

其他提示

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

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

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

编辑:感谢评论中的 Anvaka 通过将我的注意力吸引到 PathFigureCollection.Parse 来简化原始答案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top