klasa dziedziczna po Shape

0

Witam,

Aby namalowac okrąg w WPF musimy zdefiniować kształt (Ellipse) a następnie podać jego lokalizację na panelu.
W moim przypadku elipsy niosą różne informacje, stąd mają różne wielkosci i kolory.
Posiadam obecnie dwie kolekcje: lokalizacji (x,y) oraz kształtów (ellipse) i kolejno odczytuję parametry obu kolekcji. Bez sensu, ale działa.

Jako że lepsze jest wrogiem dobrego wymyśliłem aby utworzyć klasę Circle przechowującą od razu wszystkie wymagane dane:

    public class Circle : Shape
    {
        public Ellipse Ellipse;

        public int x;
        public int y;
    }

Wszystko pięknie, mam dostęp do pól x, y oraz parametrów Elipsy (wymiary, kolor)...
...ale niestety efektu brak. Byłem przekonany że klasa Ellipse niesie ze sobą tę informację, ale jak widać się myliłem.

Błąd jest taki:
[Klasa] does not implement inherited abstract member 'System.Windows.Shapes.Shape.DefiningGeometry.get'
MSDN niestety nie prezentuje detali jak definiować geometrię.

Jak obejść ten problem?

0

Z tego co widzę tutaj to dziedziczysz po czymś, co zawiera pole abstrakcyjne.
Musisz doimplementować u siebie to pole:

public override System.Windows.Media.Geometry DefiningGeometry { get{ … } };
0
Bartosz36 napisał(a):

Z tego co widzę tutaj to dziedziczysz po czymś, co zawiera pole abstrakcyjne.
Musisz doimplementować u siebie to pole:

public override System.Windows.Media.Geometry DefiningGeometry { get{ … } };

A co wstawić w trzykropek ?

0

To zależy od Ciebie.
Możesz nie wstawiać nic i nie przejmować się wrzucanymi w DefiningGeometry wartościami (chociaż nie wiem czym jest System.Windows.Media.Geometry). Wtedy wystarczy

DefiningGeometry{ get; }

Możesz też zabezpieczyć się przed wpisaniem czegoś nieprawidłowego w get{} i set{}.

0

Tu masz przykład jak narysować trójkąt:

https://stackoverflow.com/questions/12374643/wpf-custom-shape

1 użytkowników online, w tym zalogowanych: 0, gości: 1