Эллипс Геометрия Пользовательская форма - PullRequest
1 голос
/ 31 августа 2011

Я получаю форму, чтобы нарисовать эллипс.Рисование начинается с 0,0, поэтому его нарисовал только правый нижний угол эллипса.Как преобразовать начало координат в методе overridegeometry:

class Ellipse2 : Shape
{
    EllipseGeometry ellipse;
    public static readonly DependencyProperty TextBoxRProperty = DependencyProperty.Register("TextBoxR", typeof(TextBox), typeof(Ellipse2), new FrameworkPropertyMetadata(null));
    public TextBox TextBox
    {
        get { return (TextBox)GetValue(TextBoxRProperty); }
        set { SetValue(TextBoxRProperty, value); }
    }
    public Ellipse2()
    {
        ellipse = new EllipseGeometry();

        this.Stroke = Brushes.Gray;
        this.StrokeThickness = 3;
    }
    protected override Geometry DefiningGeometry
    {
        get
        {
            ellipse.RadiusX = this.Width/2;
            ellipse.RadiusY = this.Height/2;

            return ellipse;
        }
    }
}

1 Ответ

2 голосов
/ 08 сентября 2011

Я исправил это с помощью

protected override Geometry DefiningGeometry 
{ 
   get 
   { 
   TranslateTransform t = new TranslateTransform(ActualWidth / 2, ActualHeight / 2);        
   ellipse.Transform = t; 
   ellipse.RadiusX = this.ActualWidth/2; 
   ellipse.RadiusY = this.ActualHeight/2; 
   return ellipse; 
   } 
}

Другим способом было бы установить свойство center эллипса, который я думаю, для атрибутов (я еще не пробовал).

...