c# – 从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而不会丢失填充信息等内容.

点赞