WPF: Как применить GeneralTransform к данным Геометрии и возвратить новую геометрию?

Попробуйте использовать следующий код

import matplotlib as plt
% matpllotlib inline
12
задан Community 23 May 2017 в 12:00
поделиться

5 ответов

Вы могли попытаться использовать Геометрию. Объединение. Это применяет преобразование во время объединения. Одна выгода - то, что Объединение только работает, если Ваша Геометрия имеет область, таким образом, одни строки не будут работать.

Вот образец, который работал на меня.

PathGeometry geometry = new PathGeometry();
geometry.Figures.Add(new PathFigure(new Point(10, 10), new PathSegment[] { new LineSegment(new Point(10, 20), true), new LineSegment(new Point(20, 20), true) }, true));
ScaleTransform transform = new ScaleTransform(2, 2);
PathGeometry geometryTransformed = Geometry.Combine(geometry, geometry, GeometryCombineMode.Intersect, transform);
9
ответ дан 2 December 2019 в 04:43
поделиться

Я нашел решение, с которым произвольное преобразование может быть применено к геометрии пути благодаря ответу Todd White:

В основном Геометрия. Объединение используется для объединения желаемой геометрии с Геометрией. Пустое Объединение использования и желаемое преобразование даны. Получающаяся геометрия преобразовывается с данным преобразованием.

PathGeometry geometryTransformed = Geometry.Combine(Geometry.Empty, geometry, GeometryCombineMode.Union, transform);
12
ответ дан 2 December 2019 в 04:43
поделиться

К сожалению, я не думаю, что существует метод или свойство, чтобы сделать то, что Вы спрашиваете. По крайней мере, я не могу найти тот. (Большой вопрос!)

Кажется, что необходимо было бы сделать это вручную (поскольку Вы предлагаете себя)..., который является извещателем, Преобразовывают. Преобразуйте (Укажите на p) для каждой точки в Вашем PathGeometry... создающем новый PathGeometry в процессе.

Вероятно, не ответ, который Вы хотите. (Жалкая Усмешка)

0
ответ дан 2 December 2019 в 04:43
поделиться

Существует две вещи, которые необходимо рассмотреть:

  1. Геометрия наследовалась Замораживаемому, Вы не можете изменить геометрический объект, оперативный, если это замораживается.
  2. Можно просканировать список PathGeometry чисел и сегментов и преобразовать все точки в них, но некоторые типы, как ArcSegment включает размеры и углы, Вы не можете преобразовать их.
-1
ответ дан 2 December 2019 в 04:43
поделиться

У меня была та же проблема, И мне нужны линии (не только геометрия с площадью).

Я использую только PathGeometry, так что это может быть не общее решение, которым вы являетесь искал, но у меня это сработало:

pathgeometry.Transform = transform;
PathGeometry transformed =  PathGeometry.CreateFromGeometry(pathgeometry);
0
ответ дан 2 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: