2010-10-24 48 views
2

在Silverlight 3 for Mobile中,我如何得到一个Path的figure points,所以我最终可以得到它的Points(X,Y坐标)?从我一直在阅读的内容来看,这听起来像PathGeometry的树结构没有存储在Silverlight 3 for Mobile中(我正在为WP7执行此操作)......是否有其他解决方法?我想要的只是Path的Points集合。下面是我编写的用于解析路径段以获取点的代码,但是,数据集总是空的,所以我甚至无法得到段。我也尝试使用XamlReader.load来读取Path XAML,但是它有相同的结果,一个空的Figures集合。我还粘贴了下面的Path XAML。Silverlight 3 Mobile(WP7) - PathGeometry问题,请帮忙!

感谢您的阅读,希望有人能指出我在正确的方向:) 添

private List<Point> getShapePathPoints(Path shapePath) 
    { 
     List<Point> shapePathPoints = new List<Point>(); 

     PathGeometry pathGeometry = (PathGeometry)shapePath.Data; 
     foreach (PathFigure pathFigure in pathGeometry.Figures) 
     { 

      foreach (PolyLineSegment segment in pathFigure.Segments) 
      { 
       foreach (Point point in segment.Points) 
       { 
        shapePathPoints.Add(point); 
       } 
      } 
     } 

     return shapePathPoints; 
    } 

回答

1

图和链段是定义的路径的高层次编程的方式。它们并不代表路径本身使用的内部存储器,因为它们通常不具有内存效率。

用于定义绝大多数路径的迷你路径语言是路径实际内部表示的一种序列化形式。当创建这样的路径时,不会生成程序化的图形集合。

如果有一种方法可以将一种迷你语言路径逆向工程化为一组数字,但是像往常一样,需要权衡成本,这将是一个不错的补充。

的选项有: -

  • 使用XAML中,包括图和段实例而不是迷你路径语言
  • 使用的XmlReader或的XDocument加载XAML中包含的路径,找到感兴趣的路径,解析你自己的迷你语言。
+0

谢谢,这证实了我所看到的和阅读。正如你可以告诉我是Silverlight和XAML的新手......我是一名ASP.NET,服务和SQL开发人员:)但是我开始习惯这个小项目。我走了另一条路线,创建了我自己的边界路径算法。 XmlReader不适用于用迷你路径语言创建的路径,我敢打赌,它将适用于路径的数字手动添加,但你提到。 – Tim 2010-10-24 09:33:11