borland cpp builder cw3

background image

C++ Builder. Programowanie obiektowe. Ćwiczenie 3. 1
______________________________________________________________________

©2004 Jerzy Kluczewski










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 nagłówkowy









background image

2

C++ Builder. Programowanie obiektowe. Ćwiczenie 3.

______________________________________________________________________

I.

Wstęp

Naszą przygodę z grafiką w C++ Builderze rozpoczniemy od obiektu Canavas (ang.

płótno).

Nasz projekt plikacji zapiszemy w plikach rozpoczynających się od nazwy Grafika3.


Utwórz projekt aplikacji za pomocą polecenia File









New









Application

Zapisz projekt aplikacji za pomocą polecenia File









Save All ...

background image

C++ Builder. Programowanie obiektowe. Ćwiczenie 3. 3
______________________________________________________________________

©2004 Jerzy Kluczewski

Zapisz projekt do plików:

formularza do Grafika3Unit1.cpp,

głównego pliku projektu Grafika3.bpr

Zmień tytuł formularza Form1:

Ustaw opcje projektu za pomocą polecenia Project









Options ...



a w oknie zmień następujące opcje:


Polecenie: Project









Options









Application









Load Icon

background image

4

C++ Builder. Programowanie obiektowe. Ćwiczenie 3.

______________________________________________________________________


W polu „Nazwa pliku” ustaw Grafika3.ico.

Po zatwierdzeniu w panelu „Icon” pojawi się właściwa ikona.


Przejdź do zakładki „Linker
Wyłącz opcję „Use dynamic RTL”.

Przejdź do zakładki „Packeges
Wyłącz opcję „Build with runtime packages”.

Zatwierdź opcje projektu Grafika3 za pomocą przycisku „OK.” i przejdź do

następnego rozdziału.

background image

C++ Builder. Programowanie obiektowe. Ćwiczenie 3. 5
______________________________________________________________________

©2004 Jerzy Kluczewski

II.

Obiekt Canvas


Za pomocą klawisza F12 przejdź do okna edytora kodu C++:

Oto plik źródłowy Grafika3Unit1.cpp w C++ :

Otwórz plik nagłówkowy Grafika3Unit1.h :


Kliknij na zakładce zawierającej napis „Grafika3Unit1.cpp” prawym przyciskiem
myszy i wybierz pozycję „Open Source/Header File”.



background image

6

C++ Builder. Programowanie obiektowe. Ćwiczenie 3.

______________________________________________________________________


W oknie edytora pojawi się zawartość pliku nagłowkowego:


W sekcji „public:” wstaw deklarację znacznika rysowania:


bool Rysuj;

Projektowanie zdarzenia OnMouseDown


Zdarzenie OnMouseDown określa naciśnięcie myszy.

Teraz zaprojektujemy odpowiedź formularza na naciśnięcie myszy.

Za pomocą klawisza F11 przechodzimy do okna Object Inspector. Wybieramy
zakładkę Events i wyszukujemy zdarzenie „OnMouseDown”.


Klikamy dwa razy na tym napisie OnMouseDown.

background image

C++ Builder. Programowanie obiektowe. Ćwiczenie 3. 7
______________________________________________________________________

©2004 Jerzy Kluczewski


Pojawia się okno kodu C++ i pusta metoda TForm1::FormMouseDown:


W metodzie tej wpisujemy pomiędzy nawiasami klamrowymi { i } nastepujący kod:

// okreslamy obszar rysowania i pozycję początkową
Canvas->FillRect(ClientRect);
Canvas->MoveTo(X,Y);
//ustawiamy znacznik rysowania, aby mysz zostawiła slad
Rysuj = true;

Projektowanie zdarzenia OnMouseUp


Zdarzenie OnMouseUp określa puszczenie myszy.

Teraz zaprojektujemy odpowiedź formularza na puszczenie klawisza myszy.

W oknie Object Inspector wybieramy zakładkę Events i wyszukujemy zdarzenie
OnMouseUp”.

Klikamy dwa razy na tym napisie OnMouseUp.








background image

8

C++ Builder. Programowanie obiektowe. Ćwiczenie 3.

______________________________________________________________________


Pojawia się okno kodu C++ i pusta metoda TForm1::FormMouseUp:


W metodzie tej wpisujemy pomiędzy nawiasami klamrowymi { i } nastepujący kod:

// puszczono przycisk myszy - koniec rysowania
Rysuj = false;

Projektowanie zdarzenia OnMouseMove


Zdarzenie OnMouseMove określa poruszanie się myszy.

Teraz zaprojektujemy odpowiedź formularza na poruszanie się myszy.

W oknie Object Inspector wybieramy zakładkę Events i wyszukujemy zdarzenie
OnMouseMove”.


Klikamy dwa razy na tym napisie OnMouseMove.

Pojawia się okno kodu C++ i pusta metoda TForm1::FormMouseMove:

background image

C++ Builder. Programowanie obiektowe. Ćwiczenie 3. 9
______________________________________________________________________

©2004 Jerzy Kluczewski


W metodzie tej wpisujemy pomiędzy nawiasami klamrowymi { i } nastepujący kod:

if (Rysuj) // przesunięto mysz
Canvas->LineTo(X, Y);

Sprawdzamy działanie naszego projektu:

Run









Run (F9)


Projekt działa!!! 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 właściwości: „Czerwony”, „Zielony”, „Niebieski”. I ustawiamy je obok
kolejnych obiektów ScrollBar.








background image

10

C++ Builder. Programowanie obiektowe. Ćwiczenie 3.

______________________________________________________________________



Właś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 nagłówkowym Grafika3Unit1.h w sekcji public dopisz nagłówek funkcji
UstKolor:

__fastcall UstKolor(void);


Przejdź 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
}







background image

C++ Builder. Programowanie obiektowe. Ćwiczenie 3. 11
______________________________________________________________________

©2004 Jerzy Kluczewski



Okno edycji kodu C++ funkcji Form1::UstKolor(void)



Przejdź do widoku formularza (klawisz F12) i zaznacz kolejno trzy komponenty
ScrollBar:

Zmiana koloru kreślenia


Powiązanie zdarzenia zmiany pozycji obiektu ScrollBar z wywołaniem funkcji
UstKolor:

Zaznacz kolejny obiekt ScrollBar


Przejdź do okienka Obiect Inspector i zaznacz zdarzenie OnChange:


Kliknij dwa razy i w oknie kodu C++ wpisz wywołanie funkcji UstKolor().






background image

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 działanie naszego projektu:
Run









Run (F9)

Możemy dowolnie wybierać kolor kreślonej linii!!!

background image

C++ Builder. Programowanie obiektowe. Ćwiczenie 3. 13
______________________________________________________________________

©2004 Jerzy Kluczewski

III.

Podsumowanie

Nasz projekt zawiera następujące 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);












background image

14

C++ Builder. Programowanie obiektowe. Ćwiczenie 3.

______________________________________________________________________

IV.

DODATEK

Klasa TCanvas


Lista wybranych właściwości obiektu Canvas.

Właściwość

Opis

Font

Specyfikuje czcionkę (font) dla tekstu umieszczanego na obrazie.
Obiekt klasy TFont dokładnie określa rodzaj fontu, jego rozmiar,
kolor i styl..

Brush

Określa kolor i wzór używany do wypełnienia figur graficznych
oraz tła.. Właściwości obiektu klasy TBrush specyfikują kolor i
wzór lub mapę bitową używaną do wypełnienia obszaru obiektu
Canvas.

Pen

Specyfikuje rodzaj pióra użytego do rysowania linii lub obrysu
kształtu.. Właściwości klasy TPen określają dokładnie kolor, styl,
szerokość.

PenPos

Aktualna pozycja pióra.

Pixels

Specyfikuje kolor pikseli w obszarze aktualnego obiektu
ClipRect. Jest to prostokątna 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
Y3, int X4, int Y4);

Rysuje linię eliptyczną mieszczącą się w
obszarze prostokątnym określonym przez
punkty (X1,Y1) (X2,Y2); linia jest kreślona
od punktu startowego (X3,Y3) do końcowego
(X4,Y4).

CopyRect(const TRect &Dest, TCanvas*
Canvas, const TRect &Source);

Kopiuje część obrazu z jednego obiektu
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 okrąg wpisany w obszar
prostokątny określony przez punkty (X1,Y1)
(X2,Y2)

FillRect (const TRect &Rect);

Wypełnia obszar prostokątny Rect używając
aktualnego wzoru.

FrameRect (const Types::TRect &Rect);

Rysuje prostokąt – 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).


background image

C++ Builder. Programowanie obiektowe. Ćwiczenie 3. 15
______________________________________________________________________

©2004 Jerzy Kluczewski


Lista wybranych metod obiektu Canvas (ciąg dalszy)

Metoda

Opis

MoveTo(int X, int Y);

Zmienia aktualną pozycję rysowania PenPos
na (X,Y).

Polygon(const TPoint * Points, const int
Points_Size);

Rysuje serie linii tworząc wielobok
zamknięty. Parametr Points jest tablicą
opisującą punkty węzłowe. Parametr
Points_Size jest indeksem ostatniego punktu
w tablicy. Pierwszy punkt zostaje połączony z
ostatnim.

Polyline(const Types::TPoint* Points, const
int Points_Size);

Rysuje serie linii – łączących każdy punkt z
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 prostokąt – 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
X3, int Y3);

Rysuje prostokąt z zaokrąglonymi
narożnikami. X3 – szerokość zaokrąglenia,
Y3 – wysokość zaokrąglenia.

TextHeight(const AnsiString Text);
TextWidth(const AnsiString Text);

Zwraca wysokość i szerokość jaką zajmuje
łańcuch tekstowy na obrazie. Uwzględnia
użytą czcionkę oraz spacje początkowe.

TextOut(int X, int Y, const AnsiString Text); Rysuje łańcuch tekstowy w obiekcie Canvas,

od pozycji (X,Y), wartość PenPos ustawia na
końcu łańcucha.

TextRect(const Types::TRect &Rect, int X,
int Y, const AnsiString Text);

Rysuje łańcuch tekstowy wewnątrz regionu;
część tekstu przekraczającego granice regionu
zostanie obcięta.













Wyszukiwarka

Podobne podstrony:
borland cpp builder cw10
borland cpp builder cw13
borland cpp builder cw9
borland cpp builder cw2
borland cpp builder cw4
borland cpp builder cw12
borland cpp builder id 92024 Nieznany
borland cpp builder cw5
borland cpp builder cw1 id 9202 Nieznany
borland cpp builder cw6
borland cpp builder cw7
borland cpp builder cw11 id 920 Nieznany (2)
borland cpp builder cw8
borland cpp builder cw10
borland cpp builder cw13
borland cpp builder cw9

więcej podobnych podstron