Это показывает, как это сделать из кода.Я не уверен, решит ли это вашу проблему или нет - вы говорите "с смесью?"в названии, и я не знаю, как сделать это в Blend.Но я надеюсь, что это может помочь.
Первым шагом будет преобразование EllipseGeometry
в PathGeometry
:
var geom = new EllipseGeometry(new Point(5, 4), 4, 4);
var pathGeometry = PathGeometry.CreateFromGeometry(geom);
Как только вы получите PathGeometry
, вы можетепросто позвоните ToString
и получите строковое представление:
string pathText = pathGeometry.ToString();
В моей системе это дает довольно подробный текст:
"M9,4C9,6.20913899932317 7.20913899932317,8 5,8 2.79086100067683,8 1,6.20913899932317 1,4 1,1,79086100067683 2.79086100067683,0 5,0 7.20913899932317,0 9,1.79086100067683 9,4z "
Теперь, если вы хотите получить именно то, что хотели быЕсли бы вы ввели эту строку в Xaml, вам нужно сделать еще один шаг, потому что Xaml формы, которую вы предоставили:
<Path Data="M 0 5 L 3 10 10 0"/>
не дает PathGeometry
.Он создает StreamGeometry
, который является немного более эффективным, но фиксированным представлением пути.(Основное отличие состоит в том, что вы не можете получить отдельные объекты, представляющие различные фигуры и сегменты в StreamGeometry
, тогда как вы можете в PathGeometry
. StreamGeometry
дешевле, в результате.)
Вы можете получить StreamGeometry
из текста пути:
var streamGeometry = StreamGeometry.Parse(pathText);
И затем, если вы хотите это в Path
, просто создайте его:
var p = new Path { Data = streamGeometry };
В зависимости отКакова ваша точная цель, могут быть более эффективные способы сделать это.(StreamGeometry
является более эффективным представлением, поскольку в итоге создается гораздо меньше объектов. Но маршрут, по которому мой код попадает в это представление, не очень эффективен, поэтому вам лучше остановиться на PathGeometry
, которыйПервый фрагмент кода, который вы можете получить. В качестве альтернативы, если ваша цель на самом деле просто получить текст пути, тогда PathGeometry
также достаточно для ваших нужд.)