2010-09-20 185 views
4

給定System.Windows.Media.Geometry類實例,是否有一種簡單的方法將其轉換爲輪廓和點列表?例如,我怎樣才能簡單地將它分解爲一個LineSegments的定製渲染列表。從System.Windows.Media.Geometry獲取座標列表

FormattedText formattedText = new FormattedText("Hello", ...); 
Geometry textGeometry = formattedText.BuildGeometry(new System.Windows.Point(0, 0)); 

如何列出每個輪廓(其中O是一個內/外循環),並且每個點上的每個輪廓?

根據下面的答案;

var flatten = textGeometry.GetFlattenedPathGeometry(); 
    PathFigureCollection pfc = flatten.Figures; 

    foreach (PathFigure pf in pfc) 
    { 
     foreach (PathSegment ps in pf.Segments) 
     { 
      if (ps is LineSegment) 

回答

2

Geometry類,你可以使用GetFlattenedPathGeometry()GetOutlinedPathGeometry()(或相關的 - 決定你真正想要)來獲取PathGeometry,然後查詢Figures得到的數字列表。這些PathFigure對象中的每一個都有段(可能是線段,貝塞爾等)。

請注意,如果你這樣做,你可能會失去一些信息 - 如果有任何幾何可以給出,你可能需要做的不僅僅是調用FlattenedPathGeometry,而不會丟失填充信息之類的東西。

+0

謝謝 - 我稍後再介紹一下,今晚向大家彙報:) – 2010-09-20 14:20:30