to get the file
Transkrypt
to get the file
Podstawy Programowania 2 Laboratorium 9 Instrukcja 8 Obiekt klasy TCanvas Zdarzenia Opracował: mgr inż. Leszek Ciopiński Wstęp: Obiekt Canvas Obiekt Canvas stanowi integralny element każdej formatki. Nie wymagane jest więc żadne jego inicjowanie w celu rozpoczęcia jego użytkowania. Aby go użyć wystarczy w metodach danej formatki wpisać nazwę Canvas. Klasa tego obiektu dostarcza wiele metod do rysowania. Najważniejszymi z nich to: • procedure FillRect(); rysowanie wypełnionego prostokąta z ramką, jako parametry podajemy pozycję początku i końca figury • procedure TextOut(); wyświetlanie podanego tekstu w miejscu, którego koordynaty przekazujemy przez pierwsze dwa parametry • property Pixels: Tcolor; jest to tablica dwuwymiarowa, której wartość określa kolor danego piksela. Kolor zapisany jest w przestrzeni BGR • property Brush: TBrush; [rw] ustawienia pędzla do rysowania figur i linii • procedure Rectangle(); rysowanie wypełnionego prostokąta bez ramki • procedure Line(); rysowanie linii przy użyciu klasycznego pędzelka od miejsca o koordynacie pierwszej do miejsca o koordynacie drugiej Opis wszystkich metod i właściwości dostarczanych przez klasę TCanvas można znaleźć pod adresami: http://lazarus-ccr.sourceforge.net/docs/lcl/graphics/tcanvas.html i http://lazarus-ccr.sourceforge.net/docs/fcl/fpcanvas/tfpcustomcanvas.html . Koordynaty X Y Koordynaty to para dwóch liczb całkowitoliczbowych określających miejsce położenia danego piksela na danym komponencie lub formatce. Przyjmuje się, że punktem (0, 0) jest lewy górny róg formatki/elementu. Wartości X rosną, jeśli przesuwamy się w prawo, a wartości Y rosną, gdy przesuwamy się w dół. Podstawy Programowania 2 mgr inż. Leszek Ciopiński 1 TColor Jest to specjalny typ danych służący do przechowywania informacji o danym kolorze. Kolor zapisywany jest jako składowa BGR. Oznacza to, że znaczące są trzy ostatnie ósemki bitów. Każda z nich niezależnie koduje nasycenie odpowiedniej barwy, odpowiednio niebieskiej (Blue), zielonej (Green) i czerwonej (Red). Każdy pozostały kolor powstaje z odpowiedniego połączenia tych kolorów. Przykładowo barwę białą uzyskujemy poprzez maksymalne nasycenie wszystkich kolorów, co w systemie szesnastkowym zapisujemy #FFFFFF. W celu obliczenia odpowiedniej wartości proponuję wzór: 255 * (256 * 256) + 255*(256) + 255. Wynikiem tej operacji w systemie binarnym będzie dwanaście jedynek, co odpowiada barwie białej. Dla uzyskania pewnego odcienia szarości można zmniejszyć nasycenie kolorów, np. z 255 do 100, co daje wzór: 100 * (256 * 256) + 100 * (256) +100. Oczywiście każda z wartości 100 odpowiada w tym wzorze odpowiednio za nasycenie koloru niebieskiego, zielonego i czerwonego. Nie każdy kolor trzeba jednak definiować przy pomocy liczby. W bibliotece Lazarusa dostępnych jest kilka stałych określających wybrane kolory. Poniżej podano niektóre z nich: • clBlack czarny • clGreen zielony • clGray szary • clSilver srebrny • clRed czerwony • clLime jasnozielony • clYellow żółty • clBlue niebieski • clAqua jasnoniebieski • clWhite biały TBrush Klasa ta definiuje parametry, określające styl rysowania. Dwie najważniejsze właściwości obiektów tej klasy to: • property Color : TColor określa kolor, którym zostanie wykonane pokolorowanie danego elementu • property Style określa styl rysowania, np.: ciągły, we wzorek. Dopuszczalne są wartości: ◦ bsSolid, ◦ bsClear, ◦ bsHorizontal, ◦ bsVertical, ◦ bsFDiagonal, ◦ bsBDiagonal, ◦ bsCross, ◦ bsDiagCross, ◦ bsImage, ◦ bsPattern Dodatkowe informacje można znaleźć pod adresem: http://lazarus-ccr.sourceforge.net/docs/lcl/graphics/tbrush.html Podstawy Programowania 2 mgr inż. Leszek Ciopiński 2 Zdarzenia Nieodłącznym elementem tworzenia każdej aplikacji okienkowej są zdarzenia. Stanowią one sytuacje, które mogą wystąpić w programie na skutek działania użytkownika. Różne komponenty mogą obsługiwać różne zdarzenia, dlatego ich pełną listę można znaleźć klikając na odpowiedni komponent i wybierając kartę „Zdarzenia” w Inspektorze Obiektów. Obsługę danego zdarzenia możemy dodać poprzez dwukrotne kliknięcie w pole obok nazwy danego zdarzenia. Należy zauważyć, że dodane tak metody bardzo często jako parametry posiadają dodatkowe zmienne, np. zdarzenie „OnMouseMove” standardowo tworzy metodę: procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin end; Programista nie musi martwić się o przekazanie odpowiednich wartości do tych zmiennych. Zajmują się tym wewnętrzne procedury biblioteki Lazarusa. Programista uzyskuje za to między innymi koordynaty X i Y, określające miejsce położenia kursora myszy. Poniżej zostały podane nazwy najczęściej używanych zdarzeń: • OnClick Gdy obiekt zostanie kliknięty • OnMouseDown Gdy przycisk myszy zostanie przyciśnięty, ale nie koniecznie zwolniony • OnMouseMove Gdy kursor myszy porusza się ponad obiektem • OnMouseUp Gdy przycisk myszy zostaje zwolniony Komponent TStatusBar Komponent ten znajduje się w palecie komponentów w zakładce „Common Controls”. Przenosząc go na formatkę, domyślnie i w sposób automatyczny umieszczany jest on w dolnej części okna i dopasowywany do jego wymiarów. Tekst, który ma zostać wyświetlony na pasku stanu musi zostać zapisany do jego właściwości „SimpleText” Zadania: 1. a) b) c) 2. Zaprojektuj aplikację, która będzie realizowała następujące zadania: Przycisk klasy TButton powinien reagować w następujący sposób na podane zdarzenia: najazd kursora myszy na przycisk – na formatce wyświetla się pierwszy napis, np.: „Blisko” kliknięcie na przycisk – zastąpienie napisu pierwszego, napisem drugim, np.: „Kliknięto”. Dodatkowo poniżej napisu pojawia się podkreślenie, nie będące linią poziomą opuszczenie przez kursor myszy obszaru przycisku – w miejsce poprzednich napisów pojawia się napis trzeci, np.: „oddalasz się”. Ewentualne podkreślenie pozostaje. (1 punkt) Po kliknięciu na formatkę, przytrzymując wciśnięty przycisk myszy, należy rysować prostokąt z kolorem wypełnienia zgodnym z wyborem użytkownika (dostępne są barwy: czarny, szary i biały). Dodatkowo powinien być umieszczony dodatkowy przycisk służący do czyszczenia obszaru formatki – można to realizować poprzez narysowanie odpowiednio dużego prostokąta. (2 punkty) Podstawy Programowania 2 mgr inż. Leszek Ciopiński 3 3. 4. Po kliknięciu przycisku, na formatce należy wyświetlić wykres nasycenia kolorów: czerwonego, zielonego i niebieskiego, a także przejście od czerni do bieli. Przykład pokazano poniżej: (1 punkt) Wyświetlanie na pasku stanu informacji o pozycji kursora myszy i kolorze, na który wskazuje. Kolor powinien być podany w postaci liczby zapisanej szesnastkowo w przestrzeni BGR (1 punkt) Podstawy Programowania 2 mgr inż. Leszek Ciopiński 4