Componente pentru afișarea informațiilor grafice. Prezentare pe tema „Afișarea informațiilor grafice în Delphi”. Scurte informații din teorie

Pentru a afișa informații grafice, biblioteca Delphi oferă componente, a căror listă este dată în tabel. 6.

Tabelul 6

Componente pentru afișarea informațiilor grafice

Componentă Pagină Descriere
Imagine Adiţional Folosit pentru afișarea graficelor
PaintBox (fereastră pentru desen) Sistem Folosit pentru a crea o zonă pe formular în care puteți desena
DrawGrid (tabel de desene) Adiţional Folosit pentru a afișa date non-text în rânduri și coloane
Diagramă (diagrame și grafice) Adiţional Componenta aparține familiei de componente TeeChart, care sunt utilizate pentru a crea diagrame și grafice
Chartfx (diagrame și grafice) ActiveX Editor de diagrame și grafice
FIBook (pagini Excel) ActiveX Componenta de introducere și procesare a informațiilor numerice
VtChart (diagrame) ActiveX Fereastra de diagramare

În plus, puteți afișa și introduce informații grafice pe suprafața oricărei componente de fereastră care are proprietatea Pânză- pânză.

Tabele de imagine - Componentele DrawGrid și StringGrid

Componentă DrawGrid folosit pentru a crea un tabel într-o aplicație care poate conține imagini grafice. Această componentă este similară cu componenta StringGridîntrucât acesta din urmă este derivat din DrawGrid. Prin urmare în DrawGrid toate proprietățile, metodele, evenimentele componentei sunt prezente StringGrid cu excepția celor legate de text, i.e. cu excepția proprietăților Celulele, Coloane, rânduri, obiecte. Din acest punct de vedere, componenta StringGrid are capacități semnificativ mai mari decât DrawGrid deoarece poate stoca atât imagini, cât și texte în celule. Și dacă doriți să introduceți text în unele celule DrawGrid atunci va trebui să utilizați metode de afișare a textului pe un contur pentru aceasta, ceea ce nu este foarte convenabil.

Componente DrawGrid și StringGrid au un contur pânză, pe care poți posta imagini.

Există o metodă Cell-Rect, care returnează zona de pânză alocată pentru o celulă dată. Această metodă este definită ca

funcția CellRect(ACol, ARow: Longint): TRect;

Unde ACol și ARow- indici de coloană și rând începând de la 0, la intersecția cărora se află celula. Zona returnată de această funcție este zona pânzei în care poate fi desenată imaginea dorită. De exemplu, operatorul

DrawGridl.Canvas.CopyRect(DrawGridl.CellRect(1,1),

BitMap.Canvas,Rect(0,0,BitMap.Height,BitMap.Width));

metoda copierii CopyRect la celula (1,1) a tabelului DrawGridl imaginea din componentă BitMap. Această celulă este a doua din stânga și a doua din partea de sus în tabel, deoarece indicii încep de la 0. Vă rugăm să rețineți că, dacă celula este mai mică decât dimensiunea imaginii copiate, atunci numai partea din stânga sus a imaginii va apărea în celula.

Imagine pe pânza componentă DrawGrid și StringGrid, ca și pe pânza oricărei componente, este supusă ștergerii atunci când fereastra aplicației este suprapusă de alte ferestre sau, de exemplu, când aplicația este minimizată.

O modalitate convenabilă de a introduce imagini în celule DrawGrid este de a folosi un handler de evenimente OnDrawCell. Aceste evenimente au loc pentru fiecare celulă de tabel în momentul în care este redesenată. Antetul handlerului arată astfel:

procedura TForml.DrawGridlDrawCell(Expeditor: TObject;

ACol, ARrow: Integer; Rect: TRect; Stare: TGridDrawState)

Parametru Stat indică starea celulei. Este un set care poate conține următoarele elemente: gdSelectat- celula selectată, gdFocused- celula care este focalizată, gdFixed- o celulă într-o zonă fixă ​​a tabelului. Parametru Stat poate fi folosit pentru a afișa celulele în mod diferit în diferite stări.

Componentă de formă

Componentă de formă poate fi clasificat doar condiționat ca mijloc de afișare a informațiilor grafice, deoarece reprezintă pur și simplu diverse forme geometrice, umbrite corespunzător. Proprietatea principală a acestei componente este Formă(form), care poate lua următoarele valori:

StRectangle – dreptunghi;

StSquare – pătrat;

StRoundRect - dreptunghi cu colțuri rotunjite;

StRouhdSquare - pătrat cu colțuri rotunjite;

StEllipse – elipsă;

StCircle - cerc.

O altă proprietate esențială a componentei este Perie(perie). Această proprietate este un obiect de tip TBrush, având o serie de sub-proprietăți, în special culoarea (Brush.Color) si stil (Brush.Style) umplerea figurii. Puteți vedea umplerea pentru unele valori de stil în Fig. 3.2. A treia proprietate specifică a componentei Formă- Pix(penă) care definește stilul liniei.

Componenta diagramei

Acum să ne uităm la componentă Diagramă. Această componentă vă permite să construiți diverse diagrame și grafice care arată foarte impresionant. Componentă Diagramă are multe proprietăți, metode, evenimente, așa că dacă le-am lua în considerare pe toate, ar trebui să dedicăm un întreg capitol acestui lucru. Prin urmare, ne vom limita la a lua în considerare doar caracteristicile principale Diagramă. Restul le puteți găsi în ajutorul încorporat al Delphi sau pur și simplu le puteți încerca experimentând diagramele.

Componentă Diagramă este un container de obiecte Serie- mostenitorii clasei TChartSeries. Fiecare astfel de obiect reprezintă o serie de date caracterizate printr-un anumit stil de afișare: un anumit grafic sau diagramă. Fiecare componentă Diagramă poate include mai multe episoade. Dacă doriți să afișați un grafic, atunci fiecare serie va corespunde unei curbe pe grafic. Dacă doriți să afișați diagrame, pentru unele tipuri de diagrame puteți suprapune mai multe serii diferite una peste alta, pentru altele (cum ar fi diagramele circulare) probabil că va arăta urât. Cu toate acestea, chiar și în acest caz, puteți seta pentru o componentă Diagramă mai multe serii ale acelorași date cu diferite tipuri de diagrame. Apoi, activând unul dintre ele de fiecare dată, puteți oferi utilizatorului o alegere a tipului de diagramă care afișează datele de care sunt interesați.

Puneți una sau două componente Diagramă pe formular și priviți proprietățile care se deschid în Object Inspector. Iată câteva explicații ale unora dintre ele.

AllowPanning - determină capacitatea utilizatorului de a derula partea observată a graficului în timpul execuției, apăsând butonul din dreapta al mouse-ului. Valori posibile: pmNone - defilarea este interzisă, pmHori/ontal, pm Vertical sau pmBoth - defilarea este permisă, respectiv, numai pe direcția orizontală, numai pe direcția verticală, sau în ambele direcții.

AhowZoom - permite utilizatorului să modifice zoom-ul imaginii în timpul rulării prin tăierea fragmentelor dintr-o diagramă sau grafic cu cursorul mouse-ului. Dacă cadrul unui fragment este desenat spre dreapta și în jos, atunci acest fragment este întins pentru a acoperi întregul câmp al graficului. Și dacă cadrul este desenat în sus și la stânga, atunci scara originală este restaurată.

Titlu - definește titlul diagramei.

Picior - definește legenda de sub diagramă. Nici unul implicit. Textul semnăturii este determinat de subproprietatea Text.

Frame - definește cadrul în jurul diagramei.

Lângă multe dintre proprietățile enumerate în Object Inspector există butoane cu elipse care vă permit să apelați una sau alta pagină a Chart Editor - o fereastră cu mai multe pagini care vă permite să setați toate proprietățile diagramelor. Editorul de diagrame poate fi apelat și făcând dublu clic pe componentă Diagramă sau făcând clic dreapta pe el și selectând comanda Edit Chart din meniul pop-up.

Faceți dublu clic pe componenta de sus Diagramă. Veți fi dus la fereastra Chart Editor din pagina Chart, care are mai multe file. În primul rând, veți fi interesat de fila Serii de pe aceasta. Faceți clic pe butonul Adăugați - adăugați o serie. Veți fi dus la o fereastră în care puteți selecta tipul de diagramă sau grafic. În acest caz, selectați Pie - o diagramă circular. Folosind fila Titluri, puteți seta titlul diagramei, fila Legendă vă permite să setați parametrii pentru afișarea legendei diagramei (lista de simboluri) sau să o eliminați complet de pe ecran, fila Panou determină aspectul panoului pe pe care este afișată diagrama, fila 3D vă oferă posibilitatea de a schimba aspectul diagramei: înclinare, deplasare, grosime etc.

Când lucrați în Editorul de diagrame și ați selectat un tip de diagramă, componentele Diagramă Formularul dvs. își afișează aspectul cu datele condiționate introduse în el. Prin urmare, puteți vedea imediat rezultatul aplicării diferitelor opțiuni aplicației dvs., ceea ce este foarte convenabil.

Pagina Serii, care are și un număr de file, vă oferă posibilitatea de a selecta opțiuni suplimentare de afișare pentru serie. În special, pentru o diagramă circulară, în fila Format, este util să activați opțiunea Circled Pie, care va asigura că diagrama este afișată ca un cerc la orice dimensiune a componentei Chart. În fila Marks, butoanele grupului Stil determină ce se va scrie pe etichetele aferente segmentelor individuale ale diagramei: Valoare - valoare, Procent - procente, Etichetă - nume de date etc.

Puteți, dacă doriți, să adăugați o altă serie identică la această componentă Diagramă făcând clic pe butonul Clonează din fila Serii din pagina Diagramă și apoi pentru aceasta noua serie Faceți clic pe butonul Modificare și selectați un alt tip de diagramă, de exemplu Bară.

Ieșiți din Editorul de diagrame, selectați componenta de jos Chart din aplicația dvs. și repetați setarea proprietăților acesteia folosind Editorul de diagrame. În acest caz, va trebui să specificați două serii dacă doriți să afișați două curbe pe grafic și să selectați tipul de diagramă cu linii. Deoarece despre care vorbim despre grafice, puteți utiliza filele Axe și Pereți pentru a specifica caracteristicile de coordonate ale axelor și marginilor tridimensionale ale graficului.

Asta e pentru design aspect aplicarea se încheie. Tot ce rămâne este să scrieți codul care specifică datele pe care doriți să le afișați. Pentru aplicația de testare, să setăm doar câteva date constante în diagrama circulară și câteva funcții în grafice.

Pentru a seta valorile afișate, trebuie să utilizați metodele Series. Să ne concentrăm doar pe trei metode principale.

Metodă clarșterge o serie de date introduse anterior.

Metodă Adăuga:

Adăugați(Const AValue:Double; Const ALabel:String; AColor:TColor) ,

vă permite să adăugați un punct nou diagramei. Parametru O valoare corespunde valorii adăugate, parametrului O eticheta- o etichetă care va fi afișată pe diagramă și în legendă, O culoare- culoare. Parametru O eticheta- optional, poate fi setat gol: ‘ ’. Metodă AdaugăXY:

AddXY(Const AXValue, AYValue: Double; Const ALabel: String; AColor: TColor)

vă permite să adăugați un nou punct la graficul funcției. Opțiuni AXValueȘi AYValoare corespund argumentului și funcției. Opțiuni ALabel și AColor la fel ca in metoda Adăuga.

Astfel, procedura de încărcare a datelor din exemplul nostru ar putea arăta astfel:

const Al=155; A2=251; A3=203; A4=404; var i:cuvânt; ÎNCEPE

Cu seria începe

Adaugă(Al,"Atelier l",clGalben);

Adaugă(A2,"Atelier 2",clBlue);

Add(A3,"Workshop 3",clRed);

Adaugă(A4,"Atelier 4",clViolet); Sfârşit;

Seria2.Clear; SeriaS.Clear; pentru i:=0 până la 100 începe

Seria2.AddXY(0,02*Pi*i,sin(0,02*Pi*i)

SeriaS.AddXY(0.02*Pi*i,cos(0.02*Pi*i) end;

ClRed); ,clAlbastru);

Operatori clar sunt necesare dacă intenționați să actualizați datele în timp ce aplicația rulează.

Aceasta încheie introducerea noastră la componentă Diagramă. Adevărat, am luat în considerare doar o mică parte din capacitățile sale.

Lucrul cu graficaîn Delphi nu este vorba doar de linii și desene, ci și de imprimare documente text. Prin urmare în Delphi la serviciu cu grafică trebuie să petreci puțin timp. Lucreaza cu grafică în Delphi implică accesarea pânzei - proprietatea Canvas a componentelor. Pânză Delphi aceasta este o pânză care permite programatorului să aibă acces la fiecare dintre punctele sale (pixeli) și, ca un artist, să afișeze ceea ce este necesar. Desigur, desenați pixel cu pixel pentru lucrul cu graficaîn Delphi nu este necesar, sistemul Delphi oferă puternic instrumente grafice, ușurând sarcina programatorului.

Când lucrează cu grafică în Delphi, programatorul are la dispoziție un contur (pânză, pânză - proprietate Pânză Componente Delphi), creion (proprietate Pix), pensula (proprietatea pensulă) a componentei sau obiectului pe care ar trebui să pictezi. La creion Pixși perii Perie puteți schimba culoarea (proprietatea Color) și stilul (proprietatea Style). Accesul la fonturi este oferit de proprietatea canvas Font. Aceste instrumente vă permit să afișați atât text, cât și grafice destul de complexe de conținut matematic și de inginerie, precum și desene. In afara de asta, lucrul cu grafica vă permite să utilizați astfel de resurse în Delphi Windows precum fișierele grafice și video.

Desigur, nu toate componentele din Delphi au aceste proprietăți. Pe fila Adiţional este localizată o componentă specializată TImagine, special conceput pentru desen, dar și proprietate Pânză au, de exemplu, componente precum ListBox, ComboBox, StringGrid, precum și Formul în sine, care plasează componentele noastre! În plus, pentru a imprima documente, Delphi accesează proprietatea Canvas a unui obiect, cum ar fi imprimanta.

Proprietatea principală a unui astfel de obiect precum Canvas Delphi este Pixeli tip TColor, adică este o matrice bidimensională de puncte (pixeli) specificate de culoarea lor. Desenarea pe pânză are loc în momentul atribuirii unei anumite culori oricărui punct de pe pânză. Fiecărui pixel i se poate atribui orice culoare disponibilă pentru Windows. De exemplu, executarea instrucțiunii

Image1.Canvas.Pixels:=clRed;

Va avea ca rezultat desenarea unui punct roșu cu coordonate. Puteți afla culoarea unui pixel prin atribuire inversă:

Culoare:=Imagine1.Canvas.Pixeli;

Tip TColor definit ca un întreg lung (LongInt). Cei patru octeți conțin informații despre proporțiile culorilor albastru (B), verde (G) și roșu (R). În sistem hexazecimal arată astfel: $00BBGGRR. Proporția fiecărei culori poate varia de la 0 la 255. Prin urmare, pentru a afișa punctul roșu maxim, acesta trebuie să fie atribuit culoare $000000FF.
Pentru culorile standard în Delphi este definit un set de constante de text. O puteți vedea prin deschiderea proprietății Culoare, de exemplu, a aceluiași formular în Inspectorul de obiecte.

Următorul tabel conține câteva proprietăți și metode canvas:

Procedură TextOut(X, Y: Integer; const Text: WideString);
Produce o ieșire șir Text pornind de la (X, Y) - pixelul din stânga sus al textului.
Proprietate TextWidth( var Text: șir): întreg;
Conține lungimea șirului Textîn pixeli.
Proprietatea TextHeight( var Text: șir): întreg;
Conține înălțimea liniei Textîn pixeli.
Procedura MoveTo(X, Y: Integer);
Mută ​​poziția la pixelul cu adresa (X, Y).
Procedură LineTo(X, Y: Integer);
Desenează o linie dreaptă de la punctul poziției curente la pixelul cu adresa (X, Y). Adresa (X, Y) devine punctul poziției curente.
Procedura FillRect( const Rect: TRect);
Umple un dreptunghi Rect pe pânză folosind pensula curentă. Poate fi folosit, printre altele, pentru a șterge o parte a unei imagini de pe pânză.

Să scriem, folosind doar aceste metode canvas, o aplicație pentru o imagine pe pânza componentă Imagine textul care este introdus în componentă Notificare:

Primul lucru pe care îl vom face este să inițializam variabilele când pornește programul. Este necesar să se determine dimensiunea zonei de desen (vom crea o variabilă globală Rect de tip TRect pentru aceasta) și să setăm culoarea de fundal Imagine alb:

procedură TForm1.FormCreate(Expeditor: TObject);
ÎNCEPE
Rect.Stânga:=0;
Rect.Sup:=0;
Rect.Dreapta:=Image1.Width;
Rect.Bottom:=Image1.Height;
Imagine1.Canvas.Brush.Color:=clWhite;
Sfârşit;

Apoi desenați un cadru pe părțile laterale ale imaginii:

procedură TForm1.page;
ÎNCEPE
cu Imagine1.Canvas do
ÎNCEPE
Mutare la(0, 0);
LineTo(Image1.Width-1, 0);
LineTo(Image1.Width-1, Image1.Height-1);
LineTo(0, Image1.Height-1);
LineTo(0, 0);
Sfârşit;
Sfârşit;

Să încercăm ce sa întâmplat. Totul funcționează, dar cadrul nu este încă afișat. Prin urmare, să adăugăm o procedură paginăîn procedură FormCreate. Acum e frumos. În continuare, vom scrie o procedură simplă pentru ștergerea și ștergerea imaginii. Va trebui apelat înainte de orice actualizare a imaginii, altfel imaginile anterioare și ulterioare se vor suprapune.

procedură TForm1.clearing;
ÎNCEPE
Imagine1.Canvas.FillRect(Rect); //Dreptunghi Rect este umplut cu alb și imaginea este ștearsă.
Sfârşit;

Acum este rândul procedurii de ieșire a textului în sine. Să începem să desenăm text din punctul (3, 3) - colțul din stânga sus al foii, cu o ușoară indentație de 3 pixeli. Fiecare linie ulterioară va fi compensată cu înălțimea liniei:

procedură TForm1.prn;
var i: întreg;
ÎNCEPE
cu Imagine1.Canvas do
pentru i:=1 la Memo1.Lines.Count do
TextOut(3, 3+(i-1)*TextHeight("A"), Memo1.Lines);
Sfârşit;

Acum totul este gata pentru afișarea textului. Vom face acest lucru folosind evenimentul OnChange:

procedură TForm1.Memo1Change(Expeditor: TObject);
ÎNCEPE
defrișare;
prn;
pagină;
Sfârşit;

Și, în sfârșit, procedura de schimbare a dimensiunii fontului:

procedură TForm1.Edit1Change(Expeditor: TObject);
ÎNCEPE
Memo1.Font.Size:=UpDown1.Position;
Image1.Canvas.Font.Size:=UpDown1.Position;
Memo1Change(Expeditor);
Sfârşit;

Puteți modifica acest program pentru a imprima text. Pentru a lucra cu imprimanta trebuie să conectați modulul Imprimante:

unitate Unitatea 1;

Interfață

utilizări
Windows, Mesaje, SysUtils, Variante, Clase, Grafică, Controale, Formulare,
Dialoguri, StdCtrls, Imprimante ;

Când lucrați cu imprimanta ca o pânză, metoda este apelată pentru a începe imprimarea BeginDoc, apoi documentul este scos, imprimarea este finalizată prin apelarea metodei EndDoc:

Printer.BeginDoc;
cu Imprimantă.pânză do
ÎNCEPE
...Tipărește documentul...
Sfârşit;
Printer.EndDoc;

Lățimea și înălțimea rețelei imprimantei sunt disponibile prin intermediul proprietăților Printer.PageWidthȘi Printer.PageHeight. Puteți termina imprimarea pe o pagină și puteți începe tipărirea pe alta folosind metoda Printer.NewPage.

LUCRĂRI DE LABORATOR

SUBIECT: « Grafică înDelphi– construcția celor mai simple
forme geometrice"

Scurte informații din teorie

Delphi oferă dezvoltatorului trei moduri de a afișa grafică:

    trasează în timp ce programul rulează

    utilizarea graficelor pre-create

    crearea de imagini folosind componente grafice

Pentru a construi grafice, au fost create clase speciale care oferă instrumente și metode de desen: instrumentele sunt descrise în trei clase - Tfont, Tpen, Tbrush; Zona de desen și metodele sunt furnizate de clasa Tcanvas.

ClasăTfont– specifică caracteristicile fontului utilizat pentru afișarea textului pe pânză. Proprietățile clasei sunt descrise în secțiunea „Proprietăți de bază disponibile pentru majoritatea componentelor”.

ClasăTpen– precizează caracteristicile stiloului (creionului) cu care se trasează linii.

Proprietăți clasă Tpen:

Culoare:Tcolor – culoarea liniei (implicit – negru)

Lăţime:integer – grosimea liniei în pixeli;

Stil = (psSolid, psDash, psDot, psdashDot, psClear) – definește stilul liniei (solid, punctat, punctat, liniuță punctat, invizibil)

ClasăTbrush– stabilește caracteristicile pensulei care pictează suprafața imaginii.

Proprietăți clasă Tbrush:

Culoare:Tcolor – culoarea pensulei (implicit – alb)

Stil– model de perie, poate lua următoarele valori:

BsSolid – colorant solid

BsClear – lipsa umbririi

BsVertical – linii verticale

BsBdiagonal – linii diagonale dreapta

BsDiagCross – celulă oblică

BsHorizontal – linii orizontale

BsFdiagonal – linii diagonale stânga

BsCross – cușcă

ClasăTcanvas– determină suprafața pe care este plasată imaginea creată, și instrumentele cu care este creată imaginea: font, creion, pensulă.

În mod implicit, întreaga zonă client a formularului este utilizată ca zonă de lucru (pânză) (fără antet, meniul principal și liniile de defilare ale formularului), dar puteți aloca zone de lucru mai mici în interiorul formularului folosind componente PaintBox sau Imagine. Originea coordonatei pânzei este colțul din stânga sus al zonei de lucru, lățimea zonei de lucru este determinată de proprietate ClientWidth, înălțime – proprietate Înălțimea clientului.

Proprietăți clasă Tcanvas:

Pânză:Tcanvas – definește zona de desen

Perie:Tbrush – pensula pentru vopsirea formelor inchise

Font:Tfont – font pentru afișarea textului pe pânză

Pix:Tpen – creion (pen) pentru desen

PenPos:Tpoint – poziția curentă a cursorului invizibil pe pânză

cometariu : Tip Tpoint – definit după cum urmează:

Tip Point = înregistrare

Pixeli: Tcolor - setează culorile pixelilor pânzei, X, Y - coordonatele pixelilor. Proprietatea Pixeli este convenabil de utilizat pentru trasarea graficelor folosind puncte de culoarea selectată.

Principalele metode ale clasei TCanvas

    procedură Mutați către(x,y:întreg); - mută stiloul fără a trasa o linie la un punct cu coordonate (x, y).

    Procedură LineTo(x,y:întreg); - trasează o linie de la punctul curent până la punctul cu coordonatele (x, y).

Exemplu : Desenați o linie diagonală albastră pe formă din colțul din stânga sus al formei până în colțul din dreapta jos.

Pen.culoare:= clblue;

MutareTo(0,0); LineTo(ClientWidth, ClientHeight);

    procedură Dreptunghi(x1,y1,x2,y2:întreg); - desenează un dreptunghi: x1,y1 – coordonatele colțului din stânga sus; x2, y2 sunt coordonatele colțului din dreapta jos.

Exemplu : Desenați un pătrat umbrit în galben cu o latură de 60 de pixeli în mijlocul formei.

var Xc,Yc: întreg; //

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.color:=clyellow;

Canvas.dreptunghi(xc-30,Yc-30,xc+30,Yc+30);

    procedură Elipsă(x1,y1,x2,y2:întreg); - desenează o elipsă înscrisă într-un dreptunghi cu coordonatele specificate.

Exemplu : desenați o elipsă înscrisă în componenta PaintBox.

PaintBox1.Canvas.Pen.Width:=4; //latimea liniei = 4 pixeli

PaintBox1.Canvas.Ellipse(0,0, PaintBox1. ClientWidth, PaintBox1. ClientHeight);

    procedură Poligon(); - desenează un poligon închis specificat de o matrice de coordonate.

Exemplu : desenați un diamant umplut care conectează punctele medii ale laturilor formei

Var Xc,Yc:întreg; // coordonatele centrului zonei client a formularului

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.Color:=Rgb(275,140,70); // portocale culoare umbrire

Canvas.Polygon();

Sfârşit;

    Procedură Arc(x1,y1,x2,y2,x3,y3,x4,y4:intger); - afișează arcul unei elipse mărginite de un dreptunghi (x1, y1, x2, y2). Arcul este afișat de la un punct cu coordonate (x3,y3) la un punct cu coordonate (x4,y4) împotrivaîn sensul acelor de ceasornic.

Exemplu : desenați un arc de elipsă care conectează mijlocul părții superioare a componentei
PaintBox cu mijlocul părții drepte.

Procedura Tform1.Button1Click(Expeditor:Obiect);

Var X3,y3,x4,y4: Număr întreg;

Cu PaintBox1 faceți

Canvas.Pen.Color:= clAlb;

Canvas.Pen.Width:= 3;

Canvas.rectangle(0, 0, PaintBox1.ClientWidth, PaintBox1.ClientHeight);

X3:= ClientWidth div 2;

X4:= ClientWidth;

Y4:= ClientHeight div 2;

Canvas.Pen.Color:= clMaroon;

Canvas.ARC(0, 0, PaintBox1.ClientWidth, PaintBox1.ClientHeight, x3, y3, x4, y4);

Sfârşit;

    procedură Coardă(x1,y1,x2,y2,x3,y3,x4,y4:intger); - desenează o coardă - o linie dreaptă care leagă 2 puncte ale elipsei: un punct cu coordonate (x3, y3) cu un punct (x4, y4).

Exemplu : Înlocuiți metoda Chord în exemplul dat pentru metoda ARC și obțineți următorul rezultat.

    procedură Plăcintă(x1,y1,x2,y2,x3,y3,x4,y4:intger); - desenează un segment de elipsă care leagă centrul elipsei cu coordonatele (x3,y3) și (x4,y4).

Exemplu : În exemplul dat pentru metoda ARC, imaginați-vă metoda PIE și obțineți acest rezultat.

    procedură TextOut(x,y:întreg;Text:șir); - scoate șirul trecut în parametrul Text într-un dreptunghi al cărui colț din stânga sus este specificat coordonatele x,y. Caracteristicile fontului sunt stabilite de instrumentul Font.

Exemplu : scrieți numele graficului trasat în partea de jos a formularului.

Canvas.Font.Height:=20 ; //înălțimea caracterului 20 pixeli

Canvas.Font.Color:=clblue;

Canvas.TextOut(10, ClientHeight-24, ‘graficul funcției SIN(X)’);

Componente grafice

Delphi oferă o serie de componente gata făcute care vă permit să vă îmbunătățiți interfața cu utilizatorul. Aceste componente se află pe pagină AdiţionalȘi Sistem palete componente.

ComponentăImagine(ClasăTimage) – creat pentru afișarea imaginilor grafice stocate în fișiere externe cu extensii:

    Ico(icoana, pictograma);

    Bmp (bitmap, bitmap);

    Wmf, .emf (metafișier);

    Jpg, .jpeg (imagine comprimată JPEG).

De bază proprietăți :

Dimensiune automată:boolean – atunci când este setată la true, componenta își ajustează dimensiunile la dimensiunea imaginii încărcate; implicit este fals.

Întinde:boolean – dacă este adevărat, valoarea încărcată ocupă întreaga zonă a componentei; implicit este fals.

Pânză:Tcanvas – folosit pentru desenarea în interiorul componentei în timpul execuției programului.

Imagine:Tpicture - Definește imaginea plasată în componentă.

De bază metode clasă Tpictura:

Procedură LoadFromFile(Nume fișier:șir); - încarcă o imagine dintr-un fișier numit Filename în componentă.

Procedură SaveToFile(Nume fișier:șir); -salvează imaginea din componentă într-un fișier numit Filename.

ComponentăPaintBox - definește o zonă de desen dreptunghiulară. Proprietatea principală este Pânză, toate metodele clasei Tcanvas sunt disponibile, nu are proprietăți independente.

Exemplu : desenați o elipsă galbenă înscrisă în componenta PaintBox1.

Procedura Tform1Button1Click(sender:Object);

Cu PaintBox1.Canvas face

Brush.Color:=clyellow;

Elipse(0,0,PaintBox1.ClientWidth, PaintBox1.ClientHeight);

Sfârşit;

ComponentăBitBtn butonul raster

Butonul BitBtn, spre deosebire de cel standard, poate conține, pe lângă titlu (Caption), o imagine specificată de proprietate Glifă. Există un set de butoane standard BitBtn, cu proprietăți predefinite (cu o imagine specifică, inscripție și scop) - tipul de buton standard este selectat prin proprietate Drăguț. Kind=(bkCustom, bkAbort,bkCancel, bkClose...)

Sarcina nr. 1

Creați o aplicație care conține două componente de imagine și 4 butoane pe formularul principal („Încărcați imaginea”, „Construiți o figură geometrică”, „Schimbați culoarea”, „Ieșire”) și vă permite să:

a) încărcați în componenta Image1 selectată de utilizator imagine grafică astfel încât imaginea să ocupe întreaga zonă a componentei Imagine.

b) sub componenta Image1 se afișează inscripția „Aceasta este o imagine dintr-un fișier.

(pentru orice măsurare a dimensiunii și poziției componenteiImagine1 inscripție ar trebui
situat strict sub componenta).

c) desenați o figură geometrică în interiorul componentei Image2: un segment de elipsă umplut care conectează mijlocul componentei Image cu mijlocul părților inferioare și drepte ale componentei Image.

(pentru orice modificare a dimensiunii și poziției componenteiImagine2 figura trebuie construită corect, adică conform caietului de sarcini privind componentaImagine2)

d) schimbați culoarea liniei unei figuri desenate în Image2 la cererea utilizatorului folosind componenta ColorDialog.

Sarcina nr. 2

Creați o aplicație care vă permite să plasați aleatoriu mai multe etichete (de exemplu, cuvântul „Ura!”) în componenta Imagine. Pentru implementare, utilizați un generator numere aleatorii Randomize și funcția Random.

Dimensiunile componentei Imagine, cuvântul afișat în Imagine și numărul de cuvinte trebuie introduse de către utilizator.

Sarcina nr. 3

Creați o aplicație care vă permite să selectați numele unei forme geometrice dintr-un ListBox și să desenați forma selectată în componenta Image. Culoarea formei este selectată din componenta RadioGroup.

Sarcina nr. 4

Împărțiți componenta PaintBox1 în 4 părți egale, pictați fiecare parte într-o culoare diferită, de exemplu: albastru, galben, verde, roșu.

Lângă fiecare colț al PaintBox1, scrieți coordonatele acelui colț (față de originea formularului pe care se află componenta PaintBox1).

Sarcina nr. 5

CU

selectați tipul de formă de desenat din componenta Radiogroup1, culoarea de umplere din componenta Radiogroup2 și trageți forma selectată în componenta Image.

Sarcina nr. 6

Creați o aplicație care să permită utilizatorului să seteze dimensiunile componentei PaintBox1 (în pixeli).

Împărțiți componenta PaintBox1 în 2 părți egale, în interiorul fiecărei părți desenați o elipsă, umplută cu culoarea selectată de utilizator în ColorDialog.

Sarcina nr. 7

CU Creați o aplicație care vă permite să:

selectați numele unei forme geometrice din ListBox și desenați forma selectată în componenta Image. Forma ar trebui să fie completată cu culoarea selectată de utilizator în componenta ColorDialog dacă este selectat Da în componenta RadioGroup.

Sarcina nr. 8

Creați o aplicație care să permită utilizatorului să seteze dimensiunile componentei PaintBox1 (în pixeli).

Împărțiți componenta PaintBox1 în 4 părți egale, în interiorul fiecărei părți desenați o formă geometrică diferită (elipsă, romb, triunghi și dreptunghi). Culoarea fiecărei forme este selectată de utilizator în ColorGrid.

Sarcina nr. 9

selectați numele formei geometrice din ListBox
forme (elipsă, romb, dreptunghi) și desenați
forma selectată în componenta Imagine. Locație
forme din componenta Imagine (I trimestru, II trimestru,

III sau IV sfert) și se selectează culoarea figurii
din componentele RadioGroup.

Sarcina nr. 10

Creați o aplicație care să permită utilizatorului să seteze dimensiunile componentei PaintBox1 (în pixeli).

Asigurați-vă că dimensiunea laterală nu poate fi text, nu poate fi un număr negativ și nu poate depăși dimensiunea mai mică a formularului.

Împărțiți componenta PaintBox1 în 4 părți egale, în interiorul fiecărei părți desenați o formă geometrică selectată de utilizator în Combobox (elipsă, romb, triunghi și dreptunghi). Culoarea figurii este selectată de utilizator în ColorBox.

Sarcina nr. 11

Creați o aplicație care vă permite să:

selectați din componenta Radiogroup poziția desenului

în componenta Imagine a triunghiului dreptunghic, setați
culoarea umbririi figurii sau culoarea conturului, în funcție de
activarea butoanelor Casetei de selectare. Selectați culoarea prin
componenta ColorGrid.

Sarcina nr. 12

Creați o aplicație care să permită utilizatorului să seteze dimensiunile componentei PaintBox1 (în pixeli).

Asigurați-vă că dimensiunea laterală nu poate fi text, nu poate fi un număr negativ și nu poate depăși dimensiunea mai mică a formularului.

Împărțiți componenta PaintBox1 în 2 părți egale, în interiorul uneia dintre părți desenați o formă geometrică selectată de utilizator în Combobox (elipsă, romb, triunghi și dreptunghi). Culoarea figurii este selectată de utilizator în ColorBox.

De exemplu, puteți schimba culoarea formularului după cum urmează:

form1.Color:= ColorBox1.Colors;

Sarcina nr. 13

Creați o aplicație care vă permite să:

a) desenați un pătrat în mijlocul formei (mărimea laturii pătratului este introdusă de utilizator). Asigurați-vă că dimensiunea laterală nu poate fi text, nu poate fi un număr negativ și nu poate depăși dimensiunea mai mică a formularului.

b) împărțiți pătratul într-o diagonală sau două, în funcție de includerea butoanelor Casetei de selectare și pictați fiecare triunghi rezultat într-o culoare diferită. Alegerea culorii este făcută de utilizator.

Sarcina nr. 14

Creați o aplicație care să permită utilizatorului să seteze dimensiunile componentei PaintBox1 (în pixeli).

Asigurați-vă că dimensiunea laterală nu poate fi text, nu poate fi un număr negativ și nu poate depăși dimensiunea mai mică a formularului.

Împărțiți componenta PaintBox1 în 2 părți egale, în interiorul unei părți desenați un romb, iar în interiorul celeilalte părți desenați orice triunghi. Culoarea figurii este selectată de utilizator în ColorBox.

De exemplu, puteți schimba culoarea formularului după cum urmează:

form1.Color:= ColorBox1.Colors;

Sarcina nr. 15

Creați o aplicație care vă permite să:

a) setați dimensiunile componentei Imagine pe orizontală și pe verticală să fie aceleași și egale cu numărul introdus de utilizator de la tastatură;

(cu condiția ca dimensiunea laterală să nu fie text, să nu fie un număr negativ și să nu depășească dimensiunea mai mică a formularului)

b) împarte componenta Imagine în 4 pătrate egale cu două linii albastre;

c) în interiorul fiecărui pătrat rezultat, desenați un cerc înscris în el (permiteți utilizatorului să aleagă culoarea cercurilor prin caseta de dialog de selecție a culorii).

Sarcina nr. 16

Creați o aplicație care să permită utilizatorului să seteze dimensiunile componentei PaintBox1 (în pixeli).

Asigurați-vă că dimensiunea laterală nu poate fi text, nu poate fi un număr negativ și nu poate depăși dimensiunea mai mică a formularului.

Împărțiți componenta PaintBox1 în 9 părți egale și pictați fiecare dreptunghi de șah rezultat. Culoarea de umplere este selectată de utilizator în ColorBox.

De exemplu, puteți schimba culoarea formularului după cum urmează:

form1.Color:= ColorBox1.Colors;

Sarcina nr. 17

Plasați două componente Imagine și patru butoane pe formular: Line Color, Fill Color, Ok și Exit; și componenta Editare.

Când faceți clic pe butonul OK, un pătrat cu latura X este desenat în Imagine1, iar un triunghi dreptunghic cu catete egale, fiecare dintre ele având lungimea X, este desenat în Imagine2.

Vârful triunghiului coincide cu originea Image2. Unul dintre vârfurile pătratului coincide cu originea Image1.

Butonul OK devine disponibil numai atunci când ați selectat o culoare de linie și o culoare de umplere pentru a desena forma.

X – selectează aleatoriu folosind funcția Random și valoarea lui X ar trebui să fie afișată în componenta Editare.

Sarcina nr. 18

Creați o aplicație care să permită utilizatorului să seteze dimensiunile componentei PaintBox1 (în pixeli).

Împărțiți componenta PaintBox1 în 4 părți egale; în interiorul părții selectate de utilizator, trebuie construit un cerc umplut, a cărui dimensiune este setată de utilizator. Utilizatorul selectează culoarea de umplere în ColorBox.

De exemplu, puteți schimba culoarea formularului după cum urmează:

form1.Color:= ColorBox1.Colors;

Lista componentelor pentru afișarea informațiilor grafice

Pentru a afișa informații grafice, biblioteca Delphi oferă componente, a căror listă este dată în Tabelul 4.1.

Tabelul 4.1 Componentele de afișare a informațiilor grafice Pictogramă

Componentă

Pagină

Descriere

Imagine

Folosit pentru afișarea graficelor: pictograme, hărți biți și metafișiere.


PaintBox (fereastră pentru desen)

Folosit pentru a crea o zonă pe formular în care puteți desena.


DrawGrid (tabel de desene)

Folosit pentru a afișa date non-text în rânduri și coloane.


Diagramă (diagrame și grafice)

Componenta aparține familiei de componente TChart, care sunt utilizate pentru a crea diagrame și grafice.


În plus, puteți afișa și introduce informații grafice pe suprafața oricărei imagini de afișare pe o pânză.

Pânză Pânză nu este o componentă, așa că, strict vorbind, nu ar trebui luată în considerare în sfera acestei cărți. Dar, deoarece multe componente, în special forme, au un contur, iar conturul oferă posibilitatea de a afișa diverse informații grafice, este totuși recomandabil să oferiți câteva informații inițiale despre contur.

Pânza este zona unei componente pe care puteți desena sau afișa imaginile finite. Conține proprietăți și metode care simplifică foarte mult grafica Delphi. Toate interacțiunile complexe cu sistemul sunt ascunse pentru utilizator, astfel încât o persoană care nu are deloc experiență în grafica computerizată poate desena în Delphi.

Fiecare punct al conturului are coordonate XȘi Y. Sistemul de coordonate al pânzei, ca și în altă parte în Delphi, își are originea în colțul din stânga sus al pânzei. Coordona X crește la deplasarea de la stânga la dreapta, iar coordonatele Y- când se deplasează de sus în jos. Coordonatele sunt măsurate în pixeli. Un pixel este cel mai mic element al suprafeței unui design care poate fi manipulat. Cea mai importantă proprietate a unui pixel este culoarea acestuia.

Pânza are proprietatea Pixeli. Această proprietate este o matrice bidimensională care este responsabilă pentru culorile pânzei. De exemplu, Pânză. Pixeli se potrivește cu culoarea pixelului al 10-lea din stânga și al 20-lea din partea de sus. Puteți trata o matrice de pixeli ca orice proprietate: schimbați culoarea dând pixelului o nouă valoare sau determinați culoarea acestuia dintr-o valoare stocată în acesta. De exemplu, Pânză. Pixeli:=0 sau Pânză. Pixeli:=clNegru- aceasta este pentru a seta pixelul la negru.

Proprietate Pixeli poate fi folosit pentru desen pe pânză. Să încercăm să desenăm un grafic pixel cu pixel al unei sinusoide pe conturul formei. Pentru a face acest lucru, în handlerul de evenimente formular OnPaint(desen) puteți introduce următorul cod:

TForm1. FormPaint(Expeditor: TObject);

var,Y:real; // coordonatele funcției,PY: longint; // coordonatele pixelilor

ÎNCEPE:=clAlb;

pentru PX:=0 la ClientWidth do

(X este argumentul graficului,

:=PX*4*Pi/ClientWidth;:=Sin(X);

(PY - coordonatele pixelilor,

: =trunc (ClientHeight - (Y+1) *ClientHeight/2);

(Setează culoarea celui selectat

pixel (despre luminozitate). Pixeli: = 0;

Sfârşit;

Rulați această aplicație de testare și veți vedea rezultatul prezentat în Figura 4.1 a. Graficul undelor sinusoidale s-a dovedit, deși nu foarte bun, pentru că este împărțit în puncte individuale - pixeli.

Canvas - obiect de clasă TCanvas are multe metode care vă permit să desenați grafice, linii, forme folosind proprietatea Pix- pană. Această proprietate este un obiect, care, la rândul său, are o serie de proprietăți. Una dintre ele este o proprietate pe care o cunoașteți deja Culoare- culoarea cu care este aplicat desenul. A doua proprietate - Lăţime(lățimea liniei). Lățimea este specificată în pixeli. Lățimea implicită este 1.

Proprietate Stil determină tipul liniei. Această proprietate poate lua următoarele valori:

Pânza are proprietatea PenPos tip TPoint(cm .). Această proprietate determină poziția curentă a stiloului în coordonatele pânzei. Mișcarea stiloului fără a trasa o linie, de ex. Schimbare PenPos, produs prin metoda pânzei Mutare la (X,Y). Aici ( X Y) - coordonatele punctului spre care se deplasează stiloul. Acest punct curent devine punctul de plecare, de la care metoda LineTo(X,Y) puteți trage o linie către un punct cu coordonate ( X Y).În acest caz, punctul curent se mută la punctul final al liniei și un nou apel LineTo va trage un punct din acest nou punct curent.

Să încercăm să desenăm graficul sinus din exemplul anterior cu un pix. În acest caz, handlerul de evenimente de formular OnPaint poate arata ca:

procedură TForm1. FormPaint(Expeditor: TObject);

var,Y:real; // coordonatele funcției,PY: longint; // coordonatele pixelilor

ÎNCEPE: =clAlb;. MoveTo(0,ClientHeight div 2);

pentru PX: =0 la ClientWidth do

(X este argumentul graficului,

corespunzător pixelului cu coordonata РХ):=PX*4*Pi/ClientWidth;:=Sin(X);

(PY - coordonatele pixelilor,

corespunzătoare coordonatei Y):=trunc(ClientHeight - (Y+1) *ClientHeight/2);

(O linie este trasată pe grafic). LineTo(PX,PY);

Puteți vedea rezultatul aplicației în această versiune în Fig. 4.1 b. După cum puteți vedea, calitatea graficii s-a îmbunătățit semnificativ.

Pixul poate desena nu numai linii drepte, ci și forme. Pentru o listă completă a metodelor de pânză care utilizează stiloul, consultați ajutorul încorporat al Delphi. Deocamdată, ca exemplu, vom da doar una dintre ele - Elipsă, care desenează o elipsă sau un cerc. Se declara ca

procedură Elipsa(X1, Y1, X2, Y2: Integer);

unde sunt parametrii X1, X2, Y1, Y2 determinați coordonatele unui dreptunghi care descrie o elipsă sau un cerc. De exemplu, operatorul

Elipsă (10, 40, 20, 50);

va desena un cerc cu diametrul de 10 și coordonatele centrale (15, 45).

În cazul general, figurile sunt desenate nu goale, ci completate folosind proprietatea canvas Perie- perie. Proprietate Perie este un obiect care, la rândul său, are o serie de proprietăți. Proprietate Culoare definește culoarea de umplere. Proprietate Stil definește modelul de umplere (umbrire). Valoare implicită Stil egală bsSolid, ceea ce înseamnă colorare solidă Culoare.

La pix Pix Mai există o proprietate pe care încă nu am luat-o în considerare. Această proprietate este Modul(modul). Valoare implicită Mod = pmCopy. Aceasta înseamnă că liniile sunt desenate cu culoarea specificată în proprietate Culoare. Dar sunt posibile și alte moduri, în care nu se ține cont doar de culoare Culoare, dar și culoarea pixelilor de fundal corespunzători. Cel mai interesant dintre aceste moduri este pmNotXor- adăugare cu fundal folosind SAU exclusiv invers. Dacă acest mod este setat, atunci desenarea aceleiași figuri din nou în același loc pe pânză elimină imaginea desenată anterior și restabilește culorile pixelilor care erau înainte de prima imagine a figurii.

Această caracteristică a modului pmNotXor poate fi folosit pentru a crea animații simple. Este suficient să desenezi ceva, apoi să ștergi ceea ce ai desenat, să-l redesenezi ușor schimbat - iar desenul va părea să prindă viață.

Încercați să faceți singur o animație simplă - un cerc în mișcare. Porniți o nouă aplicație și accesați implementare inserați anunț

X,Y: întreg;

Aceasta va introduce variabile globale XȘi Y- coordonatele imaginii curente.

În evenimentul de formă OnPaint inserați declarații

Perie. Culoare:=clWhite;:=clWhite;. Pix. Mode:=pmNotXor;

Primul dintre acești operatori setează culoarea pensulei la alb Perie. Aceasta înseamnă că cercul tău va fi vopsit în alb în interior. Al doilea operator setează culoarea de fundal a suprafeței formularului la alb.

Al treilea operator setează modul stilou pmNotXor, care vă va permite să ștergeți vechea imagine înainte de a desena una nouă.

Chiar și cea mai simplă animație are nevoie de sincronizare. În caz contrar, viteza de mișcare va fi determinată de viteza computerului. Prin urmare, transferați componenta în formular Temporizator- cronometru din pagina Sistem. Această componentă este descrisă în secțiunea 5.7 .

Îl poți urmări acolo descriere detaliata. Pentru moment, setați-i proprietatea Interval egal cu, de exemplu, 30 (acesta este timpul de expunere în milisecunde, dar în timp real viteza obturatorului va fi mai mare - vezi secțiunea 5.7) și setați proprietatea Activat egal fals(aceasta înseamnă că cronometrul nu va porni automat la lansarea aplicației).

În cazul handler-ului acestei componente OnTimer inserați declarații

// Ștergeți imaginea anterioară. Elipsa (X-5, Y, X+5, Y-1Q);(X);

// Desenați o nouă imagine. Elipsa (X-5, Y, X+5, Y-10);

// Opriți când ajungeți la sfârșitul formularului

dacă(X >= ClientWidth-20) apoi. Activat: = fals;

Primul dintre acești operatori desenează un cerc în locul în care a fost desenat mai devreme, adică. șterge imaginea anterioară.

Ultimul operator oprește imaginea la marginea formularului.

Acum adăugați un buton la formular Butonși plasați operatorii în handlerul de clic pe acesta

X: =10;: =100;. Elipsă (X-5, Y, X+5, Y-10);. Activat: =true;

Primii doi operatori specifică coordonatele inițiale ale cercului. Al treilea operator desenează cercul în poziția sa de pornire, iar al patrulea operator pornește cronometrul.

Difuzați aplicația, rulați-o, faceți clic pe butonul. Veți vedea o imagine a unui cerc care se mișcă de-a lungul formei de la stânga la dreapta. Și apoi folosiți-vă imaginația și transformați această aplicație nu foarte interesantă în ceva mai interesant.

Pânza poate afișa nu numai imagini create programatic, ci și imagini stocate în fișiere grafice. Doar pânza în sine nu are o metodă de încărcare a unei imagini dintr-un fișier. Prin urmare, fișierul trebuie încărcat într-un alt obiect grafic care poate primi informații din fișierele grafice. Și apoi rescrieți imaginea din acest obiect pe pânză folosind metoda canvas A desena. Descrierea sa:

Draw(X, Y: Integer; Grafic: TGraphic);

Aici sunt parametrii XȘi Y determinați coordonatele colțului din stânga sus al plasării imaginii pe pânză, a Grafic- un obiect care stochează informații. Un astfel de obiect poate fi, de exemplu, un obiect de tip TBitMap, conceput pentru a stoca matrice de biți. Să vedem cum arată toate acestea în practică.

Deschideți o nouă aplicație, trageți o componentă în formular OpenPictureDialog din pagina Dialogs (aceasta este o componentă a casetei de dialog pentru deschiderea fișierelor grafice - vezi secțiunea 8.2 ) și butonul Buton. Loc OpenPictureDialog oriunde în formular, deoarece această componentă nu este vizuală, și plasați butonul în partea de jos a formularului. Adăugați următorul cod la gestionarea clicurilor pe buton:

procedură TForm1. Button1Click(Expeditor: TObject);

var: TBitMap;

// Selectarea utilizatorului fisier grafic

dacă OpenPictureDialog1. A executa apoi

// Creați un obiect BitMap de tip TBitMap: =TBitMap. Crea;

// Transferați imaginea în pânza formularului. Draw(10, 10, BitMap);

//Distrugerea obiectului BitMap. Gratuit;

Sfârşit;

Acest cod creează un obiect temporar de tip TBitMap Cu nume BitMap. Apoi se apelează dialogul pentru deschiderea unui fișier grafic OpenPictureDialog1și, dacă utilizatorul a selectat un fișier, atunci acesta este descărcat în BitMap metodă LoadFromFile. Apoi folosind metoda A desena imaginea încărcată este copiată pe pânză în zona cu coordonatele colțului din stânga sus (10,10). După aceasta obiectul temporar BitMap este distrus.

Lansați aplicația și faceți clic pe butonul acesteia. Veți vedea că puteți încărca orice tip de fișier grafic. bmpși va fi afișat pe conturul formularului (vezi Fig. 4.2 a). Puteți găsi fișiere grafice în directorul Imagini. În Delphi 5 și 4, este de obicei localizat într-un director. \program files\Common Files\Borland Shared. În Delphi 3 se află într-un director. \program files\Borland\Delphi 3, iar în Delphi 1 - în directorul Delphi 16. În directorul Imagini există, în special, un subdirector \Images\Splash\16Color\, care stochează fișierul încărcat în exemplul din fig. 4.2

Ați creat o aplicație bună pentru vizualizarea fișierelor grafice. Dar acum să încercăm să-i vedem dezavantajul major. Fără a închide aplicația, accesați alt program, de exemplu, reveniți la Delphi. Apoi, fără a face nimic acolo, reveniți la aplicația care rulează. Dacă fereastra programului în care ați intrat a blocat complet fereastra aplicației dvs., atunci când veți reveni la ea, veți vedea că imaginea din fereastră a dispărut. Dacă fereastra aplicației dvs. a fost suprapusă doar parțial, atunci când reveniți la aplicația dvs., este posibil să vedeți un rezultat similar cu cel prezentat în Fig. 4.2 b.

Vedeți că, dacă fereastra unei alte aplicații se suprapune temporar cu fereastra aplicației dvs., atunci imaginea desenată pe conturul formularului este stricata. Să vedem cum putem elimina acest dezavantaj.

Dacă o fereastră a fost ascunsă și imaginea a devenit coruptă, sistemul de operare spune aplicației că ceva s-a schimbat în mediu și că aplicația ar trebui să ia măsurile corespunzătoare. De îndată ce este necesară o actualizare a ferestrei, este generat un eveniment pentru aceasta OnPaint. În gestionarea acestui eveniment (în cazul nostru, evenimentul formular), trebuie să redesenați imaginea.

Redesenarea se poate face căi diferite in functie de aplicatie. În exemplul nostru, ar fi posibil să se declare o variabilă BitMap(operator var BitMap: TBitMap) dincolo de procedura de mai sus, de exemplu. faceți această variabilă globală plasând-o direct în secțiune implementare. Operator BitMap. Gratuit ar putea fi mutat în handlerul de evenimente de formular OnDestroy, care apare atunci când aplicația este închisă. Apoi, pe parcursul întregii execuții a aplicației dvs. veți avea o copie a imaginii în componentă BitMapși trebuie doar să intrați în handlerul de evenimente OnPaint din formă există un singur operator:

Draw(10, 10, BitMap);

Faceți acest lucru și veți vedea că imaginea de pe formular nu se deteriorează din cauza suprapunerii ferestrelor.

Pe lângă metoda considerată A desena conturul are și o metodă de copiere CopyRect:

CopyRect(Dest: TRect; Canvas: TCanvas; Sursa: TRect);

Metoda copiază parametrul specificat Sursă zona de imagine din pânza sursă a imaginii Pânză la parametrul specificat Dest zona acestei pânze. Tip TRect, care caracterizează zone dreptunghiulare SursăȘi Dest, deja descris în secțiunea 3.2 .

De exemplu, operatorul

CopyRect(MyRect2, Bitmap. Canvas, MyRect1);

copii la conturul formularului din zonă MyRect2 imagine din zonă MyRect1 pânză componentă Bitmap.

Metoda copierii CopyRect se realizează în modul specificat de proprietate CopyMode. În mod implicit, această proprietate are valoarea cmSrcCopy, ceea ce înseamnă pur și simplu înlocuirea imaginii conținute anterior în zonă Dest, la imaginea copiată. Alte valori posibile CopyMode vă permit să combinați imagini, dar luarea în considerare a acestora depășește scopul acestei cărți.

Ne vom limita la aceste informații de bază despre afișarea informațiilor grafice pe pânză. În secțiunea 3.2 au fost furnizate informații despre rezultatul textului la schiță. În general, pânza este un obiect complex care are mult mai multe proprietăți și metode. Dar aceasta necesită o discuție extinsă dincolo de scopul acestei cărți. Următoarea carte din seria All About Delphi va explora aceste probleme mai detaliat.

O componentă de fereastră care are proprietatea Pânză- pânză.

Componentele Image și PaintBox

Componente ImagineȘi PaintBox reprezintă o suprafață limitată cu o pânză pe care pot fi scrise imagini, așa cum este descris în secțiunea 4.2 . În acest caz, componenta PaintBox, strict vorbind, nu oferă nimic nou în comparație cu desenarea unei forme pe o pânză. A desena pe PaintBoxîn loc de formă, nu are avantaje, cu excepția, poate, a oarecare relief în dispunerea unuia sau a mai multor desene în zona ferestrei.

Dar pe lângă aceste capacități, componenta Imagine Există proprietăți cu care vă permit să lucrați tipuri variate fișiere grafice Acceptă trei tipuri de fișiere - matrice de biți, pictograme și metafișiere. Toate cele trei tipuri de fișiere stochează imagini; diferența constă doar în modul în care sunt stocate în interiorul fișierelor și în mijloacele de accesare a acestora. Matrice de biți (fișier cu extensia . bmp) afișează culoarea fiecărui pixel din imagine. În acest caz, informațiile sunt stocate în așa fel încât orice computer să poată afișa o imagine cu o rezoluție și un număr de culori corespunzătoare configurației acesteia.

Pictograme (fișiere cu extensia . ico) sunt matrici de biți mici. Ele sunt utilizate în mod obișnuit pentru a reprezenta pictogramele aplicațiilor, în butoanele rapide, în elementele de meniu, în diverse liste. Metoda de stocare a imaginilor în pictograme este similară cu stocarea informațiilor în matrice de biți, dar există și diferențe. În special, pictograma nu poate fi scalată; rămâne dimensiunea în care a fost creată.

Metafișierele nu stochează secvența de biți care alcătuiesc imaginea, ci informații despre cum a fost creată imaginea. Acestea stochează secvențe de comenzi de desen, care pot fi repetate la recrearea imaginii. Acest lucru face ca astfel de fișiere să fie în general mai compacte decât matricele de biți.

Componentă Imagine vă permite să afișați informații conținute în fișiere grafice de toate tipurile specificate. Acest lucru se realizează prin proprietatea sa Imagine- tip obiect TImagine.

Fig.4.3 Fereastra Editor de imagini


Pentru a vă familiariza cu această proprietate, deschideți o nouă aplicație și trageți o componentă în formular Imagine. Întindeți-l sau setați-i proprietatea Alinia egal alClient astfel încât să ocupe întreaga zonă de clienți a formularului. Faceți clic pe butonul cu punctele de suspensie de lângă proprietate Imagineîn fereastra Object Inspector sau pur și simplu faceți dublu clic pe Imagine. Fereastra Picture Editor se va deschide în fața dvs. (Fig. 4.3), permițându-vă să vă încărcați în proprietate Imagine un fișier grafic (butonul Încărcare) și, de asemenea, salvați deschide fișierul sub un nume nou sau într-un director nou. Faceți clic pe Încărcare pentru a încărca fișierul grafic. Veți vedea o fereastră pentru deschiderea unui fișier grafic, prezentată în Fig. 4.4 Pe măsură ce mutați cursorul în lista de fișiere grafice, imaginile pe care le conțin sunt afișate în fereastra din dreapta, iar deasupra lor sunt numere care caracterizează dimensiunea imaginii. . Puteți selecta orice tip de fișier grafic de care aveți nevoie. Vă reamintim că fișierele grafice furnizate cu Delphi le puteți găsi în directorul Imagini. În Delphi 5 și 4, este de obicei localizat într-un director. \program files\Common Files\Borland Shared. În Delphi 3 se află într-un director. \program files\Borland\Delphi 3, iar în Delphi 1 - în directorul Delphi 16. După ce fișierul s-a încărcat, faceți clic pe OK în fereastra Picture Editor și în componenta dvs. Imagine Poza selectată va fi afișată. Vă puteți lansa aplicația și o puteți admira. Cu toate acestea, vedeți deja imaginea fără măcar să rulați aplicația.

Când ați încărcat o imagine dintr-un fișier într-o componentă în timpul procesului de proiectare Imagine, nu numai că îl afișează, dar îl și salvează în aplicație. Acest lucru vă oferă posibilitatea de a vă livra aplicația fără un fișier grafic separat. Cu toate acestea, după cum vom vedea mai târziu, în Imagine De asemenea, puteți încărca fișiere grafice externe în timp ce aplicația rulează.

Să revenim la luarea în considerare a proprietăților componentelor Imagine.

Dacă setați proprietatea Dimensiune automată V Adevărat, apoi dimensiunea componentei Imagine se va ajusta automat la dimensiunea imaginii plasate în ea. Dacă proprietatea Dimensiune automată instalat în fals, atunci este posibil ca imaginea să nu se potrivească în componentă sau, dimpotrivă, aria componentei poate fi mult mai mare decât aria imaginii.

O alta proprietate - Întinde vă permite să ajustați nu componenta la dimensiunea imaginii, ci imaginea la dimensiunea componentei. Instalare Dimensiune automată V fals, întindeți sau micșorați dimensiunea componentei Imagineși instalați Întinde V Adevărat. Veți vedea că desenul va ocupa întreaga zonă a componentei, dar deoarece este puțin probabil să determine în mod realist dimensiunile Imagine exact proporțional cu dimensiunea imaginii, imaginea va fi distorsionată. Instalare Întinde V Adevărat poate avea sens doar pentru unele modele, dar nu și pentru imagini. Proprietate Întinde nu afectează imaginile pictogramelor care nu pot fi redimensionate.

proprietate - Centru, setat la Adevărat, centrează imaginea pe zonă Imagine, dacă dimensiunea componentei este mai mare decât dimensiunea imaginii.

Să luăm în considerare încă o proprietate - Transparent(transparenţă). Dacă Transparent egală Adevărat, apoi imaginea din Imagine devine transparent. Aceasta poate fi folosită pentru a suprapune imagini una peste alta. Așezați a doua componentă pe formular Imagineși încărcați o altă imagine în ea. Încercați doar să faceți o imagine de contur puțin umplută. Puteți, de exemplu, să faceți o fotografie dintre cele plasate de obicei pe butoane, de exemplu, o săgeată (fișier.\program files\common files\borland shared\images\buttons\arrow1l. bmp). Mută-l pe al tău Imagine astfel încât să se suprapună unul pe altul, iar în setul de componente de sus Transparent egal Adevărat. Veți vedea că imaginea de sus nu o mai ascunde pe cea de jos. Una dintre posibilele utilizări ale acestei proprietăți este suprapunerea pe o imagine a inscripțiilor realizate sub forma unei matrice de biți. Aceste inscripții pot fi făcute folosind programul Image Editor încorporat în Delphi.

Vă rugăm să rețineți că proprietatea Transparent afectează doar matricele de biți. În acest caz, culoarea pixelului din stânga jos al matricei de biți este făcută transparentă în mod implicit (adică, înlocuită cu culoarea imaginii situată sub ea).

Am acoperit încărcarea unei imagini dintr-un fișier în timpul procesului de proiectare. Dar proprietatea Imagine De asemenea, facilitează organizarea schimbului de fișiere grafice de orice tip în timpul execuției aplicației. Pentru a explica tehnica unui astfel de schimb, trebuie mai întâi să luăm în considerare mai detaliat proprietatea Imagine.

Această proprietate este un obiect, care, la rândul său, are subproprietăți care indică obiectul grafic stocat. Dacă în Imagine o matrice de biți este stocată și este indicată de proprietate Imagine. Bitmap. Dacă o pictogramă este stocată, aceasta este indicată de proprietate Imagine. Pictogramă. Metafișierul stocat este indicat de proprietate Imagine. Metafișier. În cele din urmă, un obiect grafic de orice tip este indicat de proprietate Imagine. Grafic.

Un obiect Imagineși proprietățile sale Bitmap, Pictogramă, MetafișierȘi Grafic au metode de citire și scriere a fișierelor LoadFromFileȘi SaveToFile:

procedură LoadFromFile( const Nume de fișier: şir);

procedură SaveToFile( const Nume de fișier: şir);

Pentru proprietăți Imagine. Bitmap, Imagine. PictogramăȘi Imagine. Metafișier Formatul fișierului trebuie să corespundă clasei de obiect: matrice de biți, pictogramă, metafișier. Când citiți un fișier în proprietate Imagine. Grafic fișierul trebuie să fie în format metafișier. Și pentru obiectul în sine Imagine Metodele de citire și scriere sunt ajustate automat la tipul de fișier. Să explicăm acest lucru cu un exemplu.

Să construim o aplicație similară cu exemplul de vizualizare a fișierelor grafice discutat în secțiunea 4.2. Pentru varietate, îl puteți controla folosind altceva decât un buton Buton, și meniul. Plasați o componentă pe formular Imagine. Întindeți-l sau setați-i proprietatea Alinia egal alClient astfel încât să ocupe întreaga zonă de clienți a formularului. Trageți componenta de dialog de deschidere a fișierului grafic în formular OpenPictureDialog(vezi secțiunea 8.2 ). Plasați și o componentă a meniului principal pe formular Meniu principal(vezi secțiunea 6.1 ) și setați o secțiune în ea - Fișier. În handlerul pentru această secțiune, scrieți declarația

(OpenPictureDialog1.Execute) apoi. Imagine. LoadFromFile(.FileName);

Acest operator va apela un dialog pentru deschiderea unui fișier grafic (vezi Fig. 4.4) și îl va încărca în componentă Imagine1 imagine dintr-un fișier selectat de utilizator (vezi Fig. 4.5). Mai mult, fișierul poate fi de orice tip: matrice de biți, pictogramă sau metafișier.

Fig.4.5 Imagine în componentă Imagine matrice de biți (a) și pictograma (6)



În această aplicație metoda LoadFromFile aplicat Imagine1. Imagine. Dacă vor fi deschise numai fișierele matrice de biți, atunci operatorul de încărcare a fișierelor poate fi înlocuit cu

Imagine. Bitmap LoadFromFile(.FileName);

Pentru pictograme se poate folosi un operator. Imagine. Pictogramă. LoadFromFile(.FileName);

iar pentru metafișiere - operatorul. Imagine. Metafișier. LoadFromFile(.FileName);

sau. Imagine. Grafic. LoadFromFile(.FileName);

Dar în toate aceste cazuri, dacă formatul fișierului nu se potrivește cu cel dorit, va apărea o eroare. Metoda funcționează în mod similar SaveToFile cu diferenta care se aplica la Imagine sau la Imagine. Grafic salvează o imagine cu orice format într-un fișier. De exemplu, dacă extindeți aplicația cu un dialog SalvarePictureDialog(vezi secțiunea 8.2 ), intrați în secțiunea Salvare ca din meniu și plasați operatorul în gestionarea acestuia

SalvarePictureDialog1. A executa apoi. Imagine. SaveToFile(SavePictureDialog1. FileName);

atunci utilizatorul va putea salva o imagine de orice format într-un fișier cu un nume nou. Numai în acest caz, pentru a evita confuzia în viitor, extensia fișierului salvat trebuie să corespundă în continuare formatului imaginii salvate.

Programul va funcționa absolut identic pentru imagini de orice format dacă înlocuiți operatorul de salvare cu

Imagine. Grafic. SaveToFile(.FileName);

folosind proprietatea Imagine. Grafic. Și dacă cunoașteți formatul a ceea ce este stocat în componentă Imagine imagini, apoi puteți aplica metoda SaveToFile la proprietăți Imagine. Bitmap, Imagine. PictogramăȘi Imagine. Metafișier.

Pentru toate obiectele considerate Imagine, Imagine. Bitmap, Imagine. PictogramăȘi Imagine. Metafișier metodele de atribuire a valorilor obiectelor sunt definite:

Atribuire(Sursa: TPersistent);

Cu toate acestea, pentru BitMap, PictogramăȘi Metafișier Puteți atribui doar valori obiectelor omogene: respectiv, matrice de biți, pictograme, metafișiere. Se face o excepție atunci când se încearcă alocarea de valori obiectelor eterogene EConvertError. Un obiect Imagine- universal, i se pot atribui valorile obiectelor oricăreia dintre celelalte trei clase. Și sensul Imagine poate fi atribuit numai unui obiect al cărui tip se potrivește cu tipul obiectului stocat în el.

Metodă Atribui poate fi folosit și pentru a schimba imagini cu tamponul Clipboard. De exemplu, operatorul

Atribuire(Imagine1.Imagine);

va salva imaginea stocată în clipboard în clipboard Imagine1. Operator similar

aplicație grafică delphi imagine

Imagine1. Imagine. Atribuire (Clipboard);

citeste in Imagine1 o imagine pe clipboard. Mai mult, poate fi orice imagine și chiar text.

Trebuie doar să vă amintiți când lucrați cu clipboard-ul pentru a lipi în operator utilizări linkul modulului dvs. către modul Clipbrd. Delphi nu introduce automat acest link.

Revenind la proprietățile componente Imagine, putem observa un dezavantaj inerent aplicației noastre de testare, prezentat în Fig. 4.5 La încărcarea diferitelor imagini, dimensiunea ferestrei aplicației poate fi fie prea mică și atunci veți vedea doar o parte a imaginii, fie prea mare și atunci imaginea va fi plasată neatrăgător în colțul din stânga sus al formularului, lăsând mult spațiu gol. Acest dezavantaj poate fi eliminat prin utilizarea proprietăților Înălţime(înălțimea) și Lăţime(lățime) componentă Imagine. Cu proprietate Dimensiune automată instalat în Adevărat dimensiuni Imagine sunt setate automat la aceeași dimensiune ca imaginea încărcată. Și aceste dimensiuni pot fi folosite pentru a redimensiona formularul în consecință. De exemplu, codul anterior pentru încărcarea unei imagini dintr-un fișier poate fi înlocuit cu următorul:

OpenPictureDialog1. A executa apoi

ÎNCEPE. Imagine. LoadFromFile(.FileName); ClientHeight: = Image1. Înălțime+10;. Sus:=Formular1. ClientRect. Top

+ (Form1. ClientHeight - Imagine1. Height) div 2;. ClientWidth:=Imagine1. Latime+10;. Stânga: = Form1. ClientRect. Stânga

+ (Form1. ClientWidth - Image1. Width) div 2;

Sfârşit;

Acest cod setează dimensiunea zonei client a formularului să fie puțin mai mare decât dimensiunea componentei. Imagine1, care la rândul lor se adaptează la dimensiunea imaginii datorită proprietății Dimensiune automată. Faceți aceste modificări aplicației dvs., rulați-o și vedeți că formularul se adaptează automat la dimensiunea imaginii încărcate.

Componentă de formă

Componentă Formă poate fi clasificat doar condiționat ca mijloc de afișare a informațiilor grafice, deoarece reprezintă pur și simplu diverse forme geometrice, umbrite corespunzător. Proprietatea principală a acestei componente este Formă(form), care poate lua următoarele valori:

Exemple de aceste forme sunt prezentate în Fig. 4.7

Fig.4.7 Exemple de componente Formă


O altă proprietate esențială a componentei este Perie(perie). Această proprietate este un obiect de tip TBrush, care are o serie de subproprietăți, în special: culoare ( Perie. Culoare) și stilul ( Perie. Stil) umpleți forma. Umplerea la unele valori Stil puteți vedea în Fig. 4.7 A treia dintre proprietățile specifice ale componentei Formă - Pix(penă) care definește stilul liniei. Această proprietate este ca o proprietate Perie, au fost deja discutate în secțiunea 4.2 . Puteți găsi date de referință despre aceste proprietăți în Capitolul 10*.

Componenta diagramei

Acum să ne uităm la componentă Diagramă. Această componentă vă permite să construiți diferite diagrame și grafice care arată foarte impresionant (Fig. 4.8). Componentă Diagramă are multe proprietăți, metode, evenimente, așa că dacă le-am lua în considerare pe toate, ar trebui să dedicăm un întreg capitol acestui lucru. Prin urmare, ne vom limita la a lua în considerare doar caracteristicile principale Diagramă. Restul le puteți găsi în ajutorul încorporat al Delphi sau pur și simplu le puteți încerca experimentând diagramele.

Componentă Diagramă este un container de obiecte Serie tip TChartSeries- serie de date caracterizate prin diferite stiluri de afișare. Fiecare componentă poate include mai multe serii. Dacă doriți să afișați un grafic, atunci fiecare serie va corespunde unei curbe pe grafic. Dacă doriți să afișați diagrame, pentru unele tipuri de diagrame puteți suprapune mai multe serii diferite una peste alta, pentru altele (cum ar fi diagramele circulare) probabil că va arăta urât. Cu toate acestea, și în acest caz puteți seta pentru o componentă Diagramă mai multe serii ale acelorași date cu diferite tipuri de diagrame. Apoi, activând unul dintre ele de fiecare dată, puteți oferi utilizatorului o alegere a tipului de diagramă care afișează datele de care sunt interesați.

Plasați una sau două (dacă doriți să reproduceți Fig. 4.8) componente Diagramă pe formular și priviți proprietățile care se deschid în Object Inspector. Iată câteva explicații ale unora dintre ele.

Stabilește dacă utilizatorul poate derula porțiunea observată a graficului în timpul execuției făcând clic pe butonul din dreapta al mouse-ului. Valori posibile: pmNone - defilarea este interzisă, pmHorizontal, pmVertical sau pmBoth - defilarea este permisă, respectiv, numai pe direcția orizontală, numai pe direcția verticală sau în ambele sensuri.

Permite utilizatorului să schimbe scara imaginii în timpul execuției, decupând fragmente dintr-o diagramă sau grafic cu cursorul mouse-ului (Fig. 4.8 b de mai jos arată momentul vizualizării unui fragment din grafic, prezentat în întregime în Fig. 4.8 a).

Definește titlul diagramei.

Definește eticheta pentru diagramă. Nici unul implicit. Textul semnăturii este determinat de subproprietatea Text.

Definește o chenar în jurul diagramei.

Legenda diagramei este o listă de simboluri.

MarginLeft, MarginRight, MarginTop, MarginBottom

Valorile marginilor din stânga, dreapta, sus și jos.

BottomAxis, LeftAxis, RightAxis

Aceste proprietăți determină caracteristicile axelor de jos, din stânga și, respectiv, din dreapta. Setarea acestor proprietăți are sens pentru grafice și unele tipuri de diagrame.

LeftWall, BottomWall, BackWall

Aceste proprietăți determină caracteristicile marginilor din stânga, de jos și din spate ale zonei de afișare tridimensională a graficului, respectiv (a se vedea Fig. 4.8 a, graficul de jos).

Lista serii de date afișate în componentă.

Activează sau dezactivează afișarea diagramei 3D.

Caracteristicile afișajului tridimensional.

Scară tridimensională (pentru Fig. 4.8 aceasta este grosimea diagramei și lățimea benzilor de grafic).


Lângă multe dintre proprietățile enumerate în Object Inspector există butoane cu elipse care vă permit să apelați una sau alta pagină a Chart Editor - o fereastră cu mai multe pagini care vă permite să setați toate proprietățile diagramelor. Editorul de diagrame poate fi apelat și făcând dublu clic pe componentă Diagramă sau făcând clic dreapta pe el și selectând comanda Edit Chart din meniul pop-up.

Dacă doriți să încercați să reproduceți aplicația prezentată în Figura 4.8, faceți dublu clic pe componenta de sus Diagramă. Veți fi dus la fereastra Chart Editor (Fig. 4.9) la pagina Chart, care are mai multe file. În primul rând, veți fi interesat de fila Serii de pe aceasta. Faceți clic pe butonul Adăugați - adăugați o serie. Veți fi dus la o fereastră (Fig. 4.10), în care puteți selecta tipul de diagramă sau grafic. În acest caz, selectați Pie - o diagramă circular. Folosind fila Titluri, puteți seta titlul diagramei, fila Legendă vă permite să setați parametrii pentru afișarea legendei diagramei (lista de simboluri) sau să o eliminați complet de pe ecran, fila Panou determină aspectul panoului pe pe care este afișată diagrama, fila 3D vă oferă posibilitatea de a schimba aspectul diagramei: înclinare, deplasare, grosime etc.

Când lucrați în Editorul de diagrame și ați selectat un tip de diagramă, componentele Diagramă Formularul dumneavoastră își afișează aspectul cu datele condiționate introduse în el (vezi Fig. 4.11).

Fig.4.10 Selectarea unui tip de diagramă în Editorul de diagrame


Prin urmare, puteți vedea imediat rezultatul aplicării diferitelor opțiuni aplicației dvs., ceea ce este foarte convenabil.

Pagina Serii, care are și un număr de file, vă oferă posibilitatea de a selecta opțiuni suplimentare de afișare pentru serie. În special, pentru o diagramă circulară din fila Format este util să activați opțiunea Circled Pie, care va asigura că, la orice dimensiune a componentei, Diagramă afișați graficul sub formă de cerc. În fila Marks, butoanele grupului Stil determină ce se va scrie pe etichetele aferente segmentelor individuale ale diagramei: Valoare - valoare, Procent - procente, Etichetă - nume de date etc. În exemplul din Figura 4.8, butonul Procent este activat, iar în fila General, este setat un șablon procentual pentru a se asigura că sunt afișate numai valori întregi.

Puteți, dacă doriți, să adăugați la această componentă Diagramă altă serie identică făcând clic pe butonul Clonează din fila Serii din pagina Diagramă, apoi, pentru această nouă serie, făcând clic pe butonul Modificare și selectând un alt tip de diagramă, de exemplu, Bară. Desigur, doi tipuri diferite diagramele dintr-o singură imagine vor arăta rău. Dar puteți dezactiva indicatorul pentru această nouă serie din fila Serii și apoi lăsați utilizatorul să aleagă unul sau altul tip de afișare a graficului (vom arăta mai jos cum se face acest lucru).

Ieșiți din Editorul de diagrame, selectați componenta de jos din aplicația dvs Diagramăși repetați setarea proprietăților pentru acesta folosind Editorul de diagrame. În acest caz, va trebui să specificați două serii dacă doriți să afișați două curbe pe grafic și să selectați tipul de diagramă cu linii. Deoarece vorbim despre grafice, puteți utiliza filele Axe și Pereți pentru a specifica caracteristicile de coordonate ale axelor și ale muchiilor tridimensionale ale graficului.

Acest lucru completează designul aspectului aplicației. Tot ce rămâne este să scrieți codul care specifică datele pe care doriți să le afișați. Pentru aplicația de testare, să setăm doar câteva date constante în diagrama circulară și funcții sinus și cosinus în grafice.

Pentru a seta valorile afișate, trebuie să utilizați metode în serie Serie. Să ne concentrăm doar pe trei metode principale.

Metodă clarșterge o serie de date introduse anterior.

Metodă Adăuga:

(Const AValue: Double; Const ALabel: String;: TColor)

vă permite să adăugați un punct nou diagramei. Parametru O valoare corespunde valorii adăugate, parametrului O eticheta- numele care va fi afișat pe diagramă și în legendă, O culoare- culoare. Parametru O eticheta- optional, poate fi setat gol: "".

Metodă AdăugațiXY:(Const AXValue, AYValue: Double;ALabel: String; AColor: TColor)

vă permite să adăugați un nou punct la graficul funcției. Opțiuni AXValueȘi AYValoare corespund argumentului și funcției. Opțiuni O etichetaȘi O culoare la fel ca in metoda Adăuga.

Astfel, procedura de încărcare a datelor din exemplul nostru ar putea arăta astfel:

155;=251;=203;=404;

var: cuvânt;

ÎNCEPE Seria 1 do

ÎNCEPE;(A1, „Atelier 1”, clGalben);(A2, „Atelier 2”, clAlbastru);(A3, „Atelier 3”, clRoșu);(A4, „Atelier 4”, clViolet);

Sfârşit;. Clar;. Clar;

pentru i: =0 la 100 do

ÎNCEPE. AddXY (0,02*Pi*i, sin (0,02*Pi*i), "", clRed);. AddXY (0,02*Pi*i, cos (0,02*Pi*i), "", clBlue);

Dacă aveți, de exemplu, date date afișate într-un grafic, două serii Seria 1Și Seria4 tipuri diferite - PlăcintăȘi Bar, apoi puteți introduce o procedură care modifică tipul de diagramă în funcție de solicitarea utilizatorului. Această procedură poate fi introdusă într-un eveniment OnClick un buton, o comandă de meniu sau, de exemplu, pur și simplu procesarea unui clic pe o componentă Diagramă. Pentru a încărca date în Seria4și faceți această diagramă invizibilă în primul moment, puteți introduce operatorii la sfârșitul procedurii date anterior

Atribuire (Seria 1); Activ: =fals;

Primul dintre acești operatori rescrie datele introduse Seria 1, în serie Seria4. Iar al doilea operator face seria invizibilă Seria4. Schimbarea tipului de diagramă se realizează prin procedură

Activ: = nu Seria 1. Activ;. Activ: = nu Seria4. Activ;

În Fig. 4.8 b puteți vedea rezultatul trecerii utilizatorului la o altă vizualizare a diagramei.

„Afișarea informațiilor grafice în Delphi”
Plan tematic:
1. Metode de ieșire grafică
informații în Delphi.
2. Afișați imagini.
3. Afișaj geometric
cifre.

1. Metode de afișare a informațiilor grafice.
Există mai multe moduri în Delphi
ieșire de informații grafice:
Ieșire din pre-pregătit
imagini (componente de imagine,
Formă);
Construirea de grafice și diagrame
(componenta grafică etc.);
Imagistica
programatic (obiect
pânză).

2. Afișați imagini.
Afișarea imaginilor folosind
Ne-am uitat la componenta Image în
unul dintre subiectele anterioare.
Aici ne vom uita la un exemplu
implementarea unei animații simple
prin schimbare periodică
imaginea afișată în
Componentele imaginii.
Du-te la exemplu.


Prezentarea protozoarelor
forme geometrice pe formă
furnizează componenta Formă.

3. Afișarea formelor geometrice.
Proprietățile de bază ale componentei Shape:
Perie
Pix
Formă
Culoare (.Color) și stil (.Style) pentru
umplerea figurii.
Culoare (.Color), stil (.Style), lățime
(.Width) și metoda de ieșire (.Mode) a liniilor
cifre.
Tipul figurii geometrice.

3. Afișarea formelor geometrice.
Din mai multe componente Shape
Puteți crea desene simple.
Schimbarea programului de poziție
(.Stânga, .Sus) dimensiune (.Lățime, .Înălțime) și
culoarea (Brush.Color) componentelor Shape
în desen se poate implementa
elemente de animație simplă.
Luați în considerare un exemplu.

4. Construirea de grafice și diagrame.
Diagramele sunt pentru
mai multă reprezentare vizuală
matrice de date numerice, lor
afișare vizuală și analiză.
Exemplu.
Pentru a crea diagrame în Delphi
sunt mai multe componente
una dintre ele este componenta Chart (secțiunea
TeeChart Std).

4. Construirea de grafice și diagrame.
Vedere a componentei Chart după aceasta
Setări pe formular:

4. Construirea de grafice și diagrame.
În plus față de Object Inspector, acces la
proprietățile componentei Chart pot fi
ajunge prin deschiderea unei ferestre speciale
dialog (butonul din dreapta pe componenta \
Editați diagrama...)
Adăuga
serii de date
Schimbați tipul
diagrame

4. Construirea de grafice și diagrame.
Alegerea unui tip de diagramă:

4. Construirea de grafice și diagrame.
Setarea proprietăților pentru axele de coordonate
(Axă):

4. Construirea de grafice și diagrame.
Datele de afișare sunt de obicei
transferat la Chart în mod programatic,
exemplu:
Seria1.Clear; (serie clară)
pentru i:=1 la N do
Series1.addxy(i, A[i], '', clGreen);
Valoare prin
axa X
Valoare prin
axa Y
Semnătură
axa X
Culoarea datelor
pe diagramă
Luați în considerare un exemplu de construcție
graficul funcției y = Sin(x)

Mai departe:
Lucrări de laborator № 13.1.
„Afișarea imaginilor și geometrice
figurile, animația lor”.
Exercițiu:
1) Dezvoltați o aplicație de implementat
cea mai simplă animație prin periodic
modifică imaginea afișată în
Componentele imaginii. (Numărul de imagini nu este
mai puțin de trei, selectați imagini
pe cont propriu).

Exercițiu:
2) Vino și desenează din
Componentele de formă. Din punct de vedere programatic
schimbarea poziției, mărimii sau culorii
Formează componentele într-un desen
implementează elementele cele mai simple
animaţie.

Mai departe:
Lucrări de laborator Nr. 13.2.
„Construirea de grafice și diagrame.”
Exercițiu:
1) Modificați aplicația din
lucrare de laborator nr. 9 (Afișaj
datele din tabel). Adăugați o oportunitate
afișarea unor date dintr-un tabel
pe o histogramă sau o diagramă circulară.
2) Construiți un grafic al funcției date.


Top