borland_cpp_builder_cw6.pdf

(274 KB) Pobierz
borland_cpp_builder_cw6
C++ Builder. Programowanie obiektowe. Ćwiczenie 6. 1
______________________________________________________________________
PROGRAMOWANIE OBIEKTOWE
ĆWICZENIE 6
C++ BUILDER 6.0 PE
Projektowanie prostych dywanów
·
Obiekt TForm
·
Obiekt TCanvas
·
Zdarzenie OnPaint
·
Typ TColor
·
Funkcja sin()
·
Funkcja RGB()
·
Właściwość TCanvas>Pixels
©2004 Jerzy Kluczewski
·
179162844.005.png
2 C++ Builder. Programowanie obiektowe. Ćwiczenie 6.
______________________________________________________________________
I. Wstęp
Wykonamy teraz piękny, wielobarwny dywan, który będzie kreślony w oknie
aplikacji.
Najpierw wygenerujmy nasz nowy projekt z pustym formularzem i zapiszmy go do
pliku Dywan6.bpr .
Nasz projekt plikacji zapiszemy w plikach rozpoczynających się od nazwy Dywan6 .
Utwórz projekt aplikacji za pomocą polecenia File
ã New
ã Application
Zapisz projekt aplikacji za pomocą polecenia File
ã Save All ...
Zapisz projekt do plików:
formularza do Dywan6Unit1.cpp ,
·
Zmień tytuł formularza Form1 na Dywan6 .
______________________________________________________________________
©2004 Jerzy Kluczewski
·
głównego pliku projektu Dywan6.bpr
179162844.006.png 179162844.007.png
C++ Builder. Programowanie obiektowe. Ćwiczenie 6. 3
______________________________________________________________________
II. Kreślenie grafiki
Zdarzenie Form1 ã OnPaint
Zgodnie z regułami programowania, algorytm kreślenia umieszczamy w funkcji –
reakcji na zdarzenie OnPaint – „chcę rysować”. Daje to gwarancję, Ŝe grafika zostanie
automatycznie odświeŜona, gdy formularz aplikacji będzie uaktywniony.
Wygenerujemy teraz funkcję w Object Inspector :
Środowisko przechodzi automatycznie do okna kodu funkcji TForm1::FormPaint :
Wpisujemy kod funkcji:
{
int i,j;
TColor kolor;
for( i = 0; i < ClientWidth; i++ )
{
for( j = 0; j < ClientHeight; j++ )
{
kolor = (TColor) (i * j * 3) % 100000;
Canvas->Pixels[i][j] = kolor;
}
}
}
©2004 Jerzy Kluczewski
179162844.008.png 179162844.001.png 179162844.002.png
4 C++ Builder. Programowanie obiektowe. Ćwiczenie 6.
______________________________________________________________________
Jak działa funkcja TForm1::FormPaint ?
Deklaracja zmiennych pomocniczych: i, j , typu int – oznacza Ŝe zmienne te naleŜą do
zbioru liczb całkowitych.
Deklaracja zmiennej: kolor , typu TColor – oznacza Ŝe zmienna ta przechowuje rodzaj
koloru kreślonego piksela.
int i,j;
TColor kolor;
Pętla zewnętrzna for przesuwa współrzędną poziomą piksela od pozycji 0 do pozycji
( ClientWidth-1 ).
for( i = 0; i < ClientWidth; i++ )
UWAGA:
Zmienne ClientWidth , ClientHeight określają rozpiętość powierzchni graficznej
okienka (rozdzielczość wewnętrzna formularza From1 ). Z kolei zmienne Width , Height
oznaczają rozpiętość zewnętrzną okna (formularza), a więc razem z jego ramką
i paskiem tytułu.
Pętla wewnętrzna for przesuwa współrzędną pionową piksela od pozycji 0 do pozycji
( ClientWidth-1 ).
for( j = 0; j < ClientHeight; j++ )
Przed kreśleniem kaŜdego piksela określany jego kolor za pomocą wzoru:
kolor = (TColor) (i * j * 3) % 100000;
Napis powoduje konwersję typu int na typ TColor natomiast operator % oblicza
jedynie wartość całkowitą ilorazu..
Operacja następna wstawia do tablicy pikseli Pixels znajdujących się w obiekcie
Canvas , odpowiedni kod koloru :
Canvas->Pixels[i][j] = kolor;
Teraz nadszedł czas na przetestowanie naszej aplikacji:
Uruchom ją za pomocą polecenia Run
ã Run (F9)
______________________________________________________________________
©2004 Jerzy Kluczewski
C++ Builder. Programowanie obiektowe. Ćwiczenie 6. 5
______________________________________________________________________
Wygląd okna aplikacji
Po uruchomieniu nasze okno wygląda następująco:
III. Wzbogacanie naszej aplikacji
Tworzenie ekranowego koloru
Tak naprawdę tworzenie kaŜdego koloru na ekranie polega na wybieraniu amplitudy
trzech składowych: Red – czerwonej, Green – zielonej, Blue – niebieskiej.
Aby wykorzystać tę metodę, do dyspozycji mamy funkcję RGB() .
Składnia tej funkcji wygląda następująco:
TColor RGB( int r, int g , int b )
©2004 Jerzy Kluczewski
179162844.003.png 179162844.004.png
Zgłoś jeśli naruszono regulamin