��C++ Builder. Programowanie obiektowe. wiczenie 3. 1
______________________________________________________________________
PROGRAMOWANIE OBIEKTOWE
WICZENIE 3
C++ BUILDER 6.0 PE
" Projektowanie prostej grafiki
" Obiekt TCanvas
" Obiekt TscrollBar
" Obiket TLabel
" Metoda MouseDown
" Metoda MouseUp
" Metoda MouseMove
" Zdarzenie OnMouseDown
" Zdarzenie OnMouseUp
" Zdarzenie OnMouseMove
" Zdarzenie TScrollBar->OnChange
" Plik nagB�wkowy
�2004 Jerzy Kluczewski
2 C++ Builder. Programowanie obiektowe. wiczenie 3.
______________________________________________________________________
I. Wstp
Nasz przygod z grafik w C++ Builderze rozpoczniemy od obiektu Canavas (ang.
pB�tno).
Nasz projekt plikacji zapiszemy w plikach rozpoczynajcych si od nazwy Grafika3.
Utw�rz projekt aplikacji za pomoc polecenia File New Application
Zapisz projekt aplikacji za pomoc polecenia File Save All ...
C++ Builder. Programowanie obiektowe. wiczenie 3. 3
______________________________________________________________________
Zapisz projekt do plik�w:
" formularza do Grafika3Unit1.cpp,
" gB�wnego pliku projektu Grafika3.bpr
ZmieD tytuB formularza Form1:
Ustaw opcje projektu za pomoc polecenia Project Options ...
a w oknie zmieD nastpujce opcje:
Polecenie: Project Options Application Load Icon
�2004 Jerzy Kluczewski
4 C++ Builder. Programowanie obiektowe. wiczenie 3.
______________________________________________________________________
W polu Nazwa pliku ustaw Grafika3.ico.
Po zatwierdzeniu w panelu Icon pojawi si wBa[ciwa ikona.
Przejdz do zakBadki Linker
WyBcz opcj Use dynamic RTL .
Przejdz do zakBadki Packeges
WyBcz opcj Build with runtime packages .
Zatwierdz opcje projektu Grafika3 za pomoc przycisku OK. i przejdz do
nastpnego rozdziaBu.
C++ Builder. Programowanie obiektowe. wiczenie 3. 5
______________________________________________________________________
II. Obiekt Canvas
Za pomoc klawisza F12 przejdz do okna edytora kodu C++:
Oto plik zr�dBowy Grafika3Unit1.cpp w C++ :
Otw�rz plik nagB�wkowy Grafika3Unit1.h :
Kliknij na zakBadce zawierajcej napis Grafika3Unit1.cpp prawym przyciskiem
myszy i wybierz pozycj Open Source/Header File .
�2004 Jerzy Kluczewski
6 C++ Builder. Programowanie obiektowe. wiczenie 3.
______________________________________________________________________
W oknie edytora pojawi si zawarto[ pliku nagBowkowego:
W sekcji public: wstaw deklaracj znacznika rysowania:
bool Rysuj;
Projektowanie zdarzenia OnMouseDown
Zdarzenie OnMouseDown okre[la naci[nicie myszy.
Teraz zaprojektujemy odpowiedz formularza na naci[nicie myszy.
Za pomoc klawisza F11 przechodzimy do okna Object Inspector. Wybieramy
zakBadk Events i wyszukujemy zdarzenie OnMouseDown .
Klikamy dwa razy na tym napisie OnMouseDown.
C++ Builder. Programowanie obiektowe. wiczenie 3. 7
______________________________________________________________________
Pojawia si okno kodu C++ i pusta metoda TForm1::FormMouseDown:
W metodzie tej wpisujemy pomidzy nawiasami klamrowymi { i } nastepujcy kod:
// okreslamy obszar rysowania i pozycj pocztkow
Canvas->FillRect(ClientRect);
Canvas->MoveTo(X,Y);
//ustawiamy znacznik rysowania, aby mysz zostawiBa slad
Rysuj = true;
Projektowanie zdarzenia OnMouseUp
Zdarzenie OnMouseUp okre[la puszczenie myszy.
Teraz zaprojektujemy odpowiedz formularza na puszczenie klawisza myszy.
W oknie Object Inspector wybieramy zakBadk Events i wyszukujemy zdarzenie
OnMouseUp .
Klikamy dwa razy na tym napisie OnMouseUp.
�2004 Jerzy Kluczewski
8 C++ Builder. Programowanie obiektowe. wiczenie 3.
______________________________________________________________________
Pojawia si okno kodu C++ i pusta metoda TForm1::FormMouseUp:
W metodzie tej wpisujemy pomidzy nawiasami klamrowymi { i } nastepujcy kod:
// puszczono przycisk myszy - koniec rysowania
Rysuj = false;
Projektowanie zdarzenia OnMouseMove
Zdarzenie OnMouseMove okre[la poruszanie si myszy.
Teraz zaprojektujemy odpowiedz formularza na poruszanie si myszy.
W oknie Object Inspector wybieramy zakBadk Events i wyszukujemy zdarzenie
OnMouseMove .
Klikamy dwa razy na tym napisie OnMouseMove.
Pojawia si okno kodu C++ i pusta metoda TForm1::FormMouseMove:
C++ Builder. Programowanie obiektowe. wiczenie 3. 9
______________________________________________________________________
W metodzie tej wpisujemy pomidzy nawiasami klamrowymi { i } nastepujcy kod:
if (Rysuj) // przesunito mysz
Canvas->LineTo(X, Y);
Sprawdzamy dziaBanie naszego projektu:
Run Run (F9)
Projekt dziaBa!!! Dodajmy teraz par bajer�w .
Obiekt ScrollBar
Dodajmy mo\liwo[ rysowania w dowolnym kolorze. Do naszego formularza
dodajemy trzy komponenty ScrollBar i trzy etytkiety Label. Etykietom nadajemy
kolejno wBa[ciwo[ci: Czerwony , Zielony , Niebieski . I ustawiamy je obok
kolejnych obiekt�w ScrollBar.
�2004 Jerzy Kluczewski
10 C++ Builder. Programowanie obiektowe. wiczenie 3.
______________________________________________________________________
WBa[ciwo[ci Max wszystkich obiekt�w ScrollBar ustawiamy na 255 (0-255 daje 266
odcieni ka\dego koloru).
W kodzie metody TForm1::FormMouseDown wykasuj lini
Canvas->FillRect(ClientRect);
W pliku nagB�wkowym Grafika3Unit1.h w sekcji public dopisz nagB�wek funkcji
UstKolor:
__fastcall UstKolor(void);
Przejdz do kodu C++ Grafika3Unit1.cpp i dopisz metod
__fastcall Form1::UstKolor(void):
__fastcall TForm1::UstKolor(void)
{
int NowyKolor;//w tej zmiennej wyliczymy nowy kolor
NowyKolor=ScrollBar1->Position; // Zaczynamy od koloru czerwonego
NowyKolor+=ScrollBar2->Position<�<�8;// Zielony przesuwamy o 8 bit�w w lewo
NowyKolor+=ScrollBar3->Position<�<�16;// Niebieski - 16 bit�w w lewo
// Tak oto dostali[my jeden z 16mln kolor�w (256*256*256 kombinacji)
Canvas->Pen->Color=NowyKolor; // ustawiamy kolor pi�ra
}
C++ Builder. Programowanie obiektowe. wiczenie 3. 11
______________________________________________________________________
Okno edycji kodu C++ funkcji Form1::UstKolor(void)
Przejdz do widoku formularza (klawisz F12) i zaznacz kolejno trzy komponenty
ScrollBar:
Zmiana koloru kre[lenia
Powizanie zdarzenia zmiany pozycji obiektu ScrollBar z wywoBaniem funkcji
UstKolor:
Zaznacz kolejny obiekt ScrollBar
Przejdz do okienka Obiect Inspector i zaznacz zdarzenie OnChange:
Kliknij dwa razy i w oknie kodu C++ wpisz wywoBanie funkcji UstKolor().
�2004 Jerzy Kluczewski
12 C++ Builder. Programowanie obiektowe. wiczenie 3.
______________________________________________________________________
Okno edycji kodu C++ funkcji Form1:: ScrollBar1Change
Powy\sze czynno[ci musisz wykona dla ka\dego z trzech komponent�w ScrollBar:
Sprawdzamy dziaBanie naszego projektu:
Run Run (F9)
Mo\emy dowolnie wybiera kolor kre[lonej linii!!!
C++ Builder. Programowanie obiektowe. wiczenie 3. 13
______________________________________________________________________
III. Podsumowanie
Nasz projekt zawiera nastpujce obiekty:
" Paski przewijania:
TScrollBar *ScrollBar1;
TScrollBar *ScrollBar2;
TScrollBar *ScrollBar3;
" Etykiety:
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
" Metody:
FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
int X, int Y);
FormMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
int X, int Y);
FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y);
ScrollBar1Change(TObject *Sender);
ScrollBar2Change(TObject *Sender);
ScrollBar3Change(TObject *Sender);
" Zmienne:
bool Rysuj;
" Funkcje:
UstKolor(void);
�2004 Jerzy Kluczewski
14 C++ Builder. Programowanie obiektowe. wiczenie 3.
______________________________________________________________________
IV. DODATEK
Klasa TCanvas
Lista wybranych wBa[ciwo[ci obiektu Canvas.
WBa[ciwo[ Opis
Font Specyfikuje czcionk (font) dla tekstu umieszczanego na obrazie.
Obiekt klasy TFont dokBadnie okre[la rodzaj fontu, jego rozmiar,
kolor i styl..
Brush Okre[la kolor i wz�r u\ywany do wypeBnienia figur graficznych
oraz tBa.. WBa[ciwo[ci obiektu klasy TBrush specyfikuj kolor i
wz�r lub map bitow u\ywan do wypeBnienia obszaru obiektu
Canvas.
Pen Specyfikuje rodzaj pi�ra u\ytego do rysowania linii lub obrysu
ksztaBtu.. WBa[ciwo[ci klasy TPen okre[laj dokBadnie kolor, styl,
szeroko[.
PenPos Aktualna pozycja pi�ra.
Pixels Specyfikuje kolor pikseli w obszarze aktualnego obiektu
ClipRect. Jest to prostoktna tablica zadeklarowana jako
__property TColor Pixels[int X][int Y].
Lista wybranych metod obiektu Canvas.
Metoda Opis
Arc(int X1, int Y1, int X2, int Y2, int X3, int Rysuje lini eliptyczn mieszczc si w
Y3, int X4, int Y4); obszarze prostoktnym okre[lonym przez
punkty (X1,Y1) (X2,Y2); linia jest kre[lona
od punktu startowego (X3,Y3) do koDcowego
(X4,Y4).
CopyRect(const TRect &Dest, TCanvas* Kopiuje cz[ obrazu z jednego obiektu
Canvas, const TRect &Source); Canvas do innego obiektu Canvas.
Draw(int X, int Y, TGraphic* Graphic); Renderuje obiekt graficzny Graphic w
Canvas na pozycji podanej przez (X, Y).
Ellipse(int X1, int Y1, int X2, int Y2); Rysuje elips lub okrg wpisany w obszar
prostoktny okre[lony przez punkty (X1,Y1)
(X2,Y2)
FillRect (const TRect &Rect); WypeBnia obszar prostoktny Rect u\ywajc
aktualnego wzoru.
FrameRect (const Types::TRect &Rect); Rysuje prostokt obramowanie u\ywa
aktualnego wzoru.
LineTo(int X, int Y); Rysuje linie od pozycji PenPos do punktu
okre[lonego przez X i Y, a potem ustawia
pozycj pi�ra na warto[ (X, Y).
C++ Builder. Programowanie obiektowe. wiczenie 3. 15
______________________________________________________________________
Lista wybranych metod obiektu Canvas (cig dalszy)
Metoda Opis
MoveTo(int X, int Y); Zmienia aktualn pozycj rysowania PenPos
na (X,Y).
Polygon(const TPoint * Points, const int Rysuje serie linii tworzc wielobok
Points_Size); zamknity. Parametr Points jest tablic
opisujc punkty wzBowe. Parametr
Points_Size jest indeksem ostatniego punktu
w tablicy. Pierwszy punkt zostaje poBczony z
ostatnim.
Polyline(const Types::TPoint* Points, const Rysuje serie linii Bczcych ka\dy punkt z
int Points_Size); punkt�w podanych w parametrze Points.
Parametr Points_Size okre[la indeks
ostatniego punktu w tablicy Points.
Rectangle(int X1, int Y1, int X2, int Y2); Rysuje prostokt lewy g�rny naro\nik
okre[lany jest jako punkt (X1, Y1) a dolny
prawy to punkt (X2, Y2).
RoundRect(int X1, int Y1, int X2, int Y2, int Rysuje prostokt z zaokrglonymi
X3, int Y3); naro\nikami. X3 szeroko[ zaokrglenia,
Y3 wysoko[ zaokrglenia.
TextHeight(const AnsiString Text); Zwraca wysoko[ i szeroko[ jak zajmuje
TextWidth(const AnsiString Text); BaDcuch tekstowy na obrazie. Uwzgldnia
u\yt czcionk oraz spacje pocztkowe.
TextOut(int X, int Y, const AnsiString Text); Rysuje BaDcuch tekstowy w obiekcie Canvas,
od pozycji (X,Y), warto[ PenPos ustawia na
koDcu BaDcucha.
TextRect(const Types::TRect &Rect, int X, Rysuje BaDcuch tekstowy wewntrz regionu;
int Y, const AnsiString Text); cz[ tekstu przekraczajcego granice regionu
zostanie obcita.
�2004 Jerzy Kluczewski
Wyszukiwarka
Podobne podstrony:
borland cpp builder cw1borland cpp builder cw5borland cpp builder cw10borland cpp builder cw8borland cpp builder cw9borland cpp builder cw2borland cpp builderborland cpp builder cw12borland cpp builder cw11 algorytmborland cpp builder cw4borland cpp builder cw6borland cpp builder cw7borland cpp builder cw13SQL access in Borland C Builderwięcej podobnych podstron