从System.Windows.Media.Geometry获取坐标列表

给定一个System.Windows.Media.Geometry类实例,是否有一种简单的方法将其转换为轮廓和点列表? 例如,我怎么能简单地将其分解为用于自定义渲染的LineSegments列表。

 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) 

Geometry类中,您可以使用GetFlattenedPathGeometry()GetOutlinedPathGeometry() (或相关 – 确定您真正想要的内容)来获取PathGeometry ,然后查询图形以获取图形列表。 这些PathFigure对象中的每一个都具有段(可以是线段,贝塞尔等)。

请注意,在执行此操作时,如果您天真地执行此操作,可能会丢失一些信息 – 如果可以给出任何任意几何,您可能需要做的不仅仅是调用FlattenedPathGeometry而不会丢失填充信息等内容。