Применить RenderTransform к EllipseGeometry

Я пытаюсь применить содержимое RenderTransform к физическим свойствам EllipseGeometry, то есть свойства Center/RadiusX/RadiusY EllipseGeometry изменяются в результате применения преобразования. Моя причина для этого заключается в том, что у меня есть программа для рисования, в которой вы можете рисовать эллипсы, и после рисования вам разрешается масштабировать / вращать / переводить эллипс, который под капотом я применяю как RenderTransforms для исходного объекта Path (чьи данные msgstr "свойство является объектом EllipseGeometry). Сейчас для других геометрий в моей программе рисования (кривые Безье, линии, дуги и т. Д.) Я использую следующий подход для применения RenderTransforms, когда приходит время сохранять данные в файл.

    Geometry clone = linePath.Data.Clone();
    clone.Transform = linePath.RenderTransform(); //Which is a TransformGroup in my case
    Geometry transformedGeometry = clone.GetFlattenedPathGeometry();

Это оставляет меня с чистой геометрией, к которой был применен RenderTransform "linePath". Теперь я могу легко сохранить содержимое этой геометрии в файл в "Mini Syntax" и перезагрузить его позже. Я знаю, что могу использовать тот же подход для EllipseGeometry, но результатом является приблизительная PathGeometry, описывающая переведенную EllipseGeometry, и я не знаю способа преобразования этого результата обратно в EllipseGeometry, когда я перезагружаю данные из файла. В настоящее время для объектов EllipseGeometry на чертеже я сохраняю физические свойства (Центр / Радиус / и т. Д.), А затем сохраняю соответствующий RenderTransform в виде строки XAML в файл. Затем при загрузке я просто создаю EllipseGeometry из свойств и применяю сохраненный RenderTransform.

Теперь этот подход работает, но я чувствую, что было бы чище сохранить переведенную геометрию эллипса, как в случае других геометрий. У меня также есть другие применения в моем приложении для применения RenderTransforms как физических преобразований к EllipseGeometries, и обходные пути становятся все более и более уродливыми, поэтому я бы хотел придать процесс для этого (если это вообще возможно).

Заранее спасибо!

РЕДАКТИРОВАТЬ: просто чтобы сделать вопрос немного более открытым, я не намерен использовать EllipseGeometry, так как я не понимаю, как его можно использовать для описания всех различных преобразований, которые могут присутствовать в RenderTransform (т.е. Rotate). Так что, если есть какой-то другой способ или какая-то другая геометрия, которая может использовать "эллиптическое" поведение, мне определенно было бы интересно узнать об этом.

0 ответов

Другие вопросы по тегам