WPF,将Path.DataProperty转换为Segment对象

时间:2010-03-12 21:31:12

标签: wpf path geometry line 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要比显式创建线段慢得多。然而,手动转换大量路径非常繁琐。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

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

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

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