Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
FUNCTII PENTRU GESTIONAREA RESURSELOR GRAFICE ALE MEDIULUI C++ BUILDER
1. Obiectivele lucrarii
a) Insusirea modului de utilizare a componentelor VCL TPaintBox si TPanel.
b) Insusirea modului de utilizare a principalelor functii grafice ale mediului C++BUILDER .
c) Realizarea unor elemente pentru afisarea grafica a informatiei (diagrama si bargraf).
2. Aparatura si suporturile utilizate
a) PC in configuratia unitate centrala,monitor, tastatura;
b) Precizarile din prezentul indrumar;
c) Manuale de prezentare a mediului C++BUILDER.
3. Breviar
3.1. Utilizarea componentei TPaintBox
Componenta TPaintBox se gaseste in Component Palette (pagina System) . Obiectul de acest tip furnizeaza o componenta TCanvas care permite desenarea in interiorul unui dreptunghi, prevenind depasirea marginilor acestuia.
In figura 3.1 este prezentat obiectul vizual TPaintBox (asa cum apare pe forma) iar in figura 3.2 acelasi obiect asa cum apare in pagina System. Aducerea pe forma a acestui obiect se realizeaza in conformitate cu precizarile din prima lucrare. Ca si in cazul obiectului Ttimer, nici obiectul TPaintBox nu este vizibil in timpul executiei programului (dupa cum s-a mentionat acesta delimiteaza spatiul de lucru pentru desenare).
Fig 3.1.
Fig. 3.2.
In figura 3.3 se prezinta Tabelul cu Proprietati (Object Inspector) paginile Proprietati si Evenimente pentru componenta TPaintBox.
Fig 3.3.
Proprietatea Name specifica numele PaintBox-ului.
Proprietatea Tag este utilizata pentru transferul de informatii suplimentare (variabile de tip int).
Restul elementelor din figura 3.3 sunt cunoscute de la lucrarile de laborator anterioare.
3.2. Utilizarea componentei TPanel
Componenta TPanel se gaseste in Component Palette (pagina Standard) . Obiectul de acest tip poate fi utilizat pentru desenare daca pe el se amplaseaza o componenta TPaintBox. In prezenta lucrare obiectul TPanel va fi utilizat pentru realizarea bargrafului.
In figura 3.4 este prezentat obiectul vizual TPanel (asa cum apare pe forma) iar in figura 3.5 acelasi obiect asa cum apare in pagina Standard. Aducerea pe forma a acestui obiect se realizeaza in conformitate cu precizarile din prima lucrare. Obiectul TPanel este vizibil in timpul executiei programului.
Fig 3.4.
Fig 3.5.
In figura 3.6 se prezinta Tabelul cu Proprietati (Object Inspector) paginile Proprietati si Evenimente pentru componenta TPanel.
Fig 3.6.
Proprietatea Name specifica numele Panel-ului.
Proprietatea Tag este utilizata pentru transferul de informatii suplimentare (variabile de tip int).
Proprietatile Height si Top specifica inaltimea respectiv varful (raportat la obiectul Form). Aceste proprietati se vor modifica prin program in cadrul aplicatiei de constructie a bargrafului.
Restul elementelor din figura 3.6 sunt fie cunoscute de la lucrarile de laborator anterioare fie nesemnificative pentru prezenta lucrare.
3.3. Utilizarea principalelor obiectelor grafice ale mediului C++Builder
Obiectul TCanvas furnizeaza spatiul de desenare pentru obiectele pe a caror suprafata se poate realiza un desen (de exemplu o linie pe un obiect TPaintBox). In continuare se vor prezenta proprietatile Brush si Pen ale obiectului TCanvas .
Brush - permite umplerea unui contur inchis cu o culoare (proprietatea Color) sau cu un model de hasurare (proprietatea Style).
In tabelul 3.1 se prezinta codurile culorilor principale, care pot fi utilizate pentru toate obiectele grafice.
Tabelul 3.1 Codurile culorilor Culoare Functie C++Builder negru clBlack albastru clBlue verde clGreen rosu ClRed galben clYellow mov ClFuschia maro clMaroon alb ClWhite argintiu clSilver gri clGray |
In tabelul 3.2 se prezinta codurile stilurilor de hasurare.
Tabelul 3.2
Codificarea stilurilor de hasurare
Nume |
Descriere |
bsSolid |
umple uniform toti pixelii cu culoarea selectata |
bsHorizontal |
hasura orizontala |
bsVertical |
hasura verticala |
bsFDiagonal |
hasura (diagonala stanga-dreapta) |
bsBDiagonal |
hasura /// (diagonala dreapta - stanga) |
bsCross |
hasura in cruce +++ |
bsDiagCross |
hasura in cruce oblica xxx |
Pen - permite fixarea unor atribute ale liniilor drepte sau curbe si anume culoare (color), grosime (width), tip (style).
In tabelul 3.3 sunt prezentate codurile pentru stilurile de linie.
Tabelul 3.3
Codificarea stilurilor de linie
Nume |
Descriere |
psSolid |
linie continua |
psDot |
linie punctata |
psDash |
linie intrerupta |
psDashDot |
linie intrerupta (linie-punct) |
psDashDot Dot |
linie intrerupta (linie-punct-punct) |
Pentru grosimi se foloseste proprietatea Width a obiectului grafic Pen in care se specifica un numar intreg (implicit Width=1 pixel, iar alte grosimi se exprima prin multipli 3 pixeli = 3*Width).
Pentru culori sunt valabile codurile din tabelul 3.1.
Obiectului TCanvas ii sunt asociate si foarte multe metode (functii) dintre care in tabelul 3.4 se prezinta cele cu o frecventa mai mare de utilizare.
Tabelul 3.4
Functii de desenare ale obiectului TCanvas
Prototip |
Functie |
MoveTo(int x,int y) |
fixeaza pozitia curenta in (x,y) |
LineTo (int x,int y); |
linie din poz. curenta pina la (x,y) |
Ellipse(int stinga,int sus, int dreapta, int jos) |
deseneaza o elipsa tangenta la laturile dreptunghiului specificat |
Rectangle(int stinga,int sus, int dreapta,int jos) |
deseneaza un dreptunghi cu coordonatele colturilor specificate |
TextOut (int x, int y, AnsiString Text) |
afiseaza textul Text incepand cu punctul de coordonate x, z |
FloodFill (int x, int y, TColor Culoare , TfillStyle Stil) Stil=fsSurface sau fsBorder |
umple o suprafata,marginita de un contur cu culoare Culoare, care contine punctul de coordonate (x,y) cu stilul Stil (implicit fsBorder) |
CopyRect (TRect dest TCanvas Canvas, TRect sursa) |
copiaza zona definita de dreptunghiul sursa in Canvas-ul Canvas in zona definita de dreptunghiul dest |
Observatii
Suprafata delimitata de un obiect TPaintBox este vazuta ca o matrice de dimensiuni Width Height puncte, conform figurii 3.7.
x (Width,0) |
|
(0,Height) (Width ,Height ) Fig. 3.7.
2. Referitor la utilizarea obiectului CopyRect (copiaza o zona dreptunghiulara dintr-un Canvas in alta zona dreptunghiulara in acelasi Canvas) se prezinta urmatorul exemplu edificator.
TRect sursa,destinatie; // variabilele sursa si destinatie sunt de tipul TRect
sursa=Rect(stinga1, sus1, dreapta1, jos1) ; // se construieste dreptunghiul sursa
destinatie=Rect(stinga2, sus2, dreapta2, jos2) ; // se construieste dreptunghiul destinatie
PaintBox1->Canvas->CopyRect(destinatie,PaintBox1->Canvas,sursa) ;
//copiaza imagina incadrata de dreptunghiul sursa in dreptunghiul destinatie
Pentru detalii in legatura cu utilizarea resurselor grafice ale mediului C++Buider se poate consulta lucrarea : Oltean M., Cocan M., C++Buider in aplicatii, Ed. Albastra, Cluj-Napoca, 1998.
Se prezinta mai jos codul sursa al programului P1 care utilizeaza o mare parte din resursele grafice ale mediului C++Builder enumerate in breviar (comentariile se refera intotdeauna la linia urmatoare).
#include <vclvcl.h>
#pragma hdrstop
#include 'P1.h'
#pragma resource '*.dfm'
TForm1 *Form1;
int xs,ys;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
void __fastcall TForm1::Button1Click(TObject *Sender)
void __fastcall TForm1::Button2Click(TObject *Sender)
void __fastcall TForm1::Button3Click(TObject *Sender)
void __fastcall TForm1::Button4Click(TObject *Sender)
void __fastcall TForm1::Button5Click(TObject *Sender)
void __fastcall TForm1::Button6Click(TObject *Sender)
void __fastcall TForm1::Button7Click(TObject *Sender)
void __fastcall TForm1::Button8Click(TObject *Sender)
4. Modul de lucru
a) Se alimenteaza sistemul cu tensiune;
b) Se lanseaza mediul C++ Builder (dublu click pe icon-ul corespunzator din desktop);
c) Se selecteaza din Main Menu optiunea File si apoi OpenProject urmat de calea D:DIDACTICSMP1905 (a sau b)LUC3Project1.mak.
e) Se executa click pe butonul Run din Toolbar (aceasta actiune este urmata de lansarea in executie a programului P1 al carui text sursa este prezentat in breviar);
f) Se examineaza in programul P1 utilizarea elementelor resurselor grafice ale mediului C++Builder ;
g) Se elaboreaza programul P2 pentru realizarea a doua elemente de afisare (bargraf si diagrama cu avans continuu) pentru care forma arata ca in figura 3.8 pe care sunt dispuse urmatoarele obiecte:
o forma (Form1) in Caption-ul careia se va afisa textul "Laboratorul Informatica Industriala";
trei butoane (Button 1, 2, 3 ) cu urmatoarele functii:
Buton1 - activarea afisarii in diagrama si in bargraf ( Caption Start);
Buton2 - oprirea afisarii in diagrama si in bargraf ( Caption Stop);
Buton3 - iesirea din program (Caption Exit).
Fig 3.8.
doua timere (Timer1 si Timer2) cu urmatoarele functii
Timer1 (Interval=1000 ms) utilizat la afisarea timpului curent;
Timer2 (Interval=500 ms) pentru intervalul de afisare in diagrama si in bargraf;
o caseta de editare (Edit1) utilizata pentru afisarea datei si orei curente;
doua etichete (Label1 si Label2) cu Caption-ul conform figurii 3.8
Fig.3.9.
Observatii
din primele doua butoane, la un un moment dat va fi activ unul singur;
fiecare obiect va avea hint-ul activ completat corespunzator;
valoarea numerica ce se va afisa in cele doua elemente grafice se obtine cu functia random dupa care numarul generat se va converti in pixeli tinandu-se cont de inaltimea comuna a graficului si bargrafului
pentru realizarea bargrafului se vor utiliza doua obiecte de tip TPanel de culori diferite care se vor suparpune;
pentru desenarea graficului se vor utiliza functiile MoveTo, LineTo iar pentru avansul acestuia functia CopyRect.
In timpul executiei programului forma va avea aspectul din figura 3.9.
g) Lucrarea se considera incheiata in momentul in care programul P2 este functional. Referatul va cuprinde principalele idei din breviar referitoare la mediul C++Builder (resursele grafice) si forma sursa a unit-ului programului P2.
Politica de confidentialitate |
Copyright © 2024 - Toate drepturile rezervate