2010-09-20 186 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