ControlDesigner
Wersja B
Rozszerzenie możliwości standardowej kontrolki, klasa "projektanta" kontrolki
- Opis:
- kontrolka wyświetlająca bitmapę obciętą wybraną krzywą
- stworzenie klasy zarządzającej sposobem projektowania kontrolki (designer)

- Funkcjonalność:
- rozszerzenie możliwości standardowej kontrolki
- kontrolka dziedzicząca po PictureBox
- należy stworzyć 2 nowe właściwości
- krzywa zawsze jest wyznaczana przez 4 punkty
- właściwość Points nie może być widoczna na zakładce właściwości
- właściwość ClipRegionType należy umieścić w kategorii Behavior,
określa ona sposób łączenia punktów
- Poligon - łączenie odcinkami, łamana
- Spline - krzywa zamknięta
- zmiana wartości właściwości powoduje odświeżenie kontrolki
- wyświetlanie należy zrealizować nadpisując metodę OnPaint kontrolki bazowej
- punkty mogą leżeć poza obszarem kontrolki
- punkty definiujące krzywą i krzywa jest rysowana tylko w trybie projektowania
- klasa zarządzająca sposobem projektowania kontrolki
- klasa dziedzicząca po ControlDesigner
- związanie klasy "designera" z klasą kontrolki poprzez atrybut DesignerAttribute
- umożliwia przesuwanie punktów definiujących krzywą
- punkty można umieszczać poza obszarem kontrolki
- menu kontekstowe kontrolki w trybie projektowania posiada opcję zmiany sposobu łączenia punktów (rysunek poniżej, kolekcja ControlDesigner.Verbs)
- nie wolno utracić funkcjonalności bazowego "designera" (przesuwanie, zmiana rozmiarów kontrolki)

- należy również stworzyć formularz wykorzystujący nową kontrolkę
- Wskazówki:
- DesignerAttribute
- BrowsableAttribute, CategoryAttribute, DefaultValueAttribute
- Component.DesignMode
- ControlDesigner, ControlDesigner.On...()
- ControlDesigner.Verbs, DesignerVerb
- Przybliżona punktacja:
- rozszerzona kontrolka: 4.0
- designer kontrolki: 5.0
- formularz prezentujący możliwości kontrolki: 1.0