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