Путь не отображается

У меня есть презентатор контента с контентом, привязанным к форме из шаблонного родителя. Когда фигура представляет собой эллипс, презентатор содержимого показывает эллипс, однако, когда я изменяю форму на путь и устанавливаю свойство данных на геометрию эллипса, ничего не отображается, я устанавливаю обводку и заливку так же, как для формы эллипса. Вот как я строю путь:

        Shape = new Path();
        Shape.Data = new EllipseGeometry();
        Shape.Fill = Brushes.Transparent;
        Shape.Stroke = Brushes.CadetBlue;

Однако, когда я заменяю его этим, он работает (при условии, что форма имеет тип эллипса):

        Shape = new Ellipse();
        Shape.Fill = Brushes.Transparent;
        Shape.Stroke = Brushes.CadetBlue;

Причина, по которой я хочу использовать путь с геометрией в качестве данных, заключается в том, что я хочу проверить пересечение формы, но я не знаю, как получить геометрию объекта формы, где, как если бы форма имела тип Path Я могу протестировать Shape.Data.

Любая помощь будет оценена по достоинству.


person mihajlv    schedule 07.01.2012    source источник
comment
Вы можете попробовать Geometry.Parse (значения в точках) и присвоить возвращаемое значение Shape.Data   -  person deathrace    schedule 23.01.2016


Ответы (1)


EllipseGeometry ведет себя немного иначе, чем Ellipse. Его размеры определяются его свойствами RadiusX и RadiusY, которые по умолчанию равны 0, поэтому ничего не рисуется. Вы можете установить их следующим образом:

Shape.Data = new EllipseGeometry { RadiusX = 1.0, RadiusY = 1.0 };

Однако это все еще, вероятно, не будет отображаться, как ваш Ellipse. Ellipse также по умолчанию имеет значение Stretch.Fill для свойства Stretch, но Path имеет Stretch.None. Если вы измените это, они должны выглядеть одинаково:

Shape.Stretch = Stretch.Fill;

Вы можете поиграть с другими свойствами Path и EllipseGeometry, чтобы правильно определить размер, ориентацию и расположение.

person jeffora    schedule 07.01.2012