Это показывает, как это сделать из кода. Я не уверен, что это решит вашу проблему или нет - вы говорите «со смесью»? в названии, и я не знаю, как это сделать в 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,4C 9,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
также будет достаточным для ваших нужд.)
Дубликат http://stackoverflow.com/questions/5227830/convert-geometry-path-to- minilanguage-string – jpierson