WPF,将 Path.DataProperty 转换为 Segment 对象
题
我想知道是否有一个工具可以将“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 来简化原始答案。
不隶属于 StackOverflow