plik


ÿþ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 cw1
borland cpp builder cw5
borland cpp builder cw10
borland cpp builder cw8
borland cpp builder cw9
borland cpp builder cw2
borland cpp builder
borland cpp builder cw12
borland cpp builder cw11 algorytm
borland cpp builder cw4
borland cpp builder cw6
borland cpp builder cw7
borland cpp builder cw13
SQL access in Borland C Builder

więcej podobnych podstron