2010-10-24 70 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