Получить список координат из System.Windows.Media.Geometry - PullRequest
4 голосов
/ 20 сентября 2010

Учитывая экземпляр класса 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)

1 Ответ

2 голосов
/ 20 сентября 2010

В классе Geometry вы можете использовать GetFlattenedPathGeometry(), GetOutlinedPathGeometry() (или связанное - решите, что вы на самом деле хотите), чтобы получить PathGeometry, а затем запросить Figures, чтобы получить список цифр. Каждый из этих PathFigure объектов имеет сегменты (которые могут быть линейными сегментами, Безье и т. Д.).

Обратите внимание, что при этом вы можете потерять некоторую информацию, если сделаете это наивно - если вы можете указать произвольную геометрию, вам, вероятно, потребуется сделать больше, чем просто вызвать FlatenedPathGeometry, чтобы не потерять такие вещи, как информация о заполнении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...