Grafinės informacijos pateikimo delphi būdai. Pristatymas tema "Grafinės informacijos atvaizdavimas Delphi"

skaidrė 2

"Grafinės informacijos atvaizdavimas Delphi" Temos planas: Grafinės informacijos rodymo Delphi būdai. Paveikslėlių rodymas. Geometrinių figūrų demonstravimas. Grafikų ir diagramų sudarymas.

skaidrė 3

1. Grafinės informacijos atvaizdavimo metodai. Grafinę informaciją Delphi galima atvaizduoti keliais būdais: Iš anksto paruoštų vaizdų išvestis (Image, Shape komponentai); Grafikų ir diagramų sudarymas (Diagramos komponentas ir kt.); Vaizdų formavimas programiškai (Canvas object).

skaidrė 4

Paveikslėlių rodymas. Vaizdų rodymas naudojant vaizdo komponentą buvo aptartas vienoje iš ankstesnių temų. Čia mes apsvarstysime paprasčiausios animacijos įgyvendinimo pavyzdį, periodiškai keičiant rodomą vaizdą vaizdo komponentuose. Eikite į pavyzdį.

skaidrė 5

Geometrinių figūrų demonstravimas. Paprasčiausių geometrinių figūrų atvaizdavimą formoje užtikrina komponentas Shape.

skaidrė 6

Geometrinių figūrų demonstravimas. Pagrindinės Shape komponento savybės:

7 skaidrė

Geometrinių figūrų demonstravimas. Galite sukurti paprastus brėžinius iš kelių Shape komponentų. Programiškai keičiant brėžinyje Shape komponentų padėtį (.Left, .Top), dydį (.Width, .Height) ir spalvą (Brush.Color), galima įgyvendinti paprasčiausios animacijos elementus. Apsvarstykite pavyzdį.

8 skaidrė

Grafikų ir diagramų sudarymas. Diagramos skirtos vaizdingesniam skaitmeninių duomenų masyvų atvaizdavimui, jų vizualiniam atvaizdavimui ir analizei. Pavyzdys. Norėdami kurti diagramas Delphi, yra keli komponentai, vienas iš jų yra diagramos komponentas (skyrius TeeChart Std).

9 skaidrė

Grafikų ir diagramų sudarymas. Diagramos komponento vaizdas, kai jis įdiegtas formoje:

10 skaidrė

Grafikų ir diagramų sudarymas. Be „Objektų inspektoriaus“, prieigą prie diagramos komponento savybių galima gauti atidarius specialų dialogo langą (dešinysis komponento mygtukas \ Redaguoti diagramą...) Pridėti duomenų seriją Keisti diagramos tipą

skaidrė 11

Grafikų ir diagramų sudarymas. Diagramos tipo pasirinkimas:

skaidrė 12

Grafikų ir diagramų sudarymas. Koordinačių ašių (Axis) savybių nustatymas:

skaidrė 13

Grafikų ir diagramų sudarymas. Rodomi duomenys dažniausiai perduodami į diagramą programiškai, pavyzdžiui: Series1.Clear; (aiškios serijos) i:=1 iki N do Series1.addxy(i, A[i], ‘’, clGreen); Reikšmė X ašyje Reikšmė Y ašyje Etiketė X ašyje Duomenų spalva diagramoje Apsvarstykite funkcijos y = Sin(x) braižymo pavyzdį.

14 skaidrė

Kitas: Lab #13.1. „Paveikslėlių ir geometrinių figūrų rodymas, jų animacija“. Užduotis: 1) Sukurti programą, skirtą paprasčiausios animacijos įgyvendinimui, periodiškai keičiant rodomą vaizdą Vaizdo komponentuose. (Nuotraukų skaičius ne mažiau kaip trys, paveikslėlius išsirinkite patys).

skaidrė 15

Užduotis: 2) Sugalvokite ir nupieškite paveikslėlį iš Shape komponentų. Programiškai keisdami Shape komponentų padėtį, dydį ar spalvą brėžinyje, įgyvendinkite paprasčiausios animacijos elementus.

skaidrė 16

Kitas: 12.2 laboratorija. "Statybos grafikai ir diagramos". Užduotis: modifikuokite programą iš 9 laboratorijos (Duomenų atvaizdavimas lentelėje). Pridėkite galimybę rodyti kai kuriuos duomenis iš lentelės juostinėje arba skritulinėje diagramoje. 2) Sukurkite duotosios funkcijos grafiką.

Peržiūrėkite visas skaidres

Pristatymo aprašymas atskirose skaidrėse:

1 skaidrė

Skaidrės aprašymas:

2 skaidrė

Skaidrės aprašymas:

Delphi vizualinio programavimo aplinka, kaip ir Windows, palaiko grafinę vartotojo sąsają (GDI – Graphic Delphi Interface). Yra du būdai Delphi rodyti grafinę informaciją: iš anksto paruoštų vaizdų išvestis; piešimas iš programos.

3 skaidrė

Skaidrės aprašymas:

Pirmasis metodas pagrįstas vaizdo ir formos komponentų naudojimu. Galite naudoti paruoštą paveikslėlį (piktogramą) arba sukurti juos patys naudodami vaizdų rengyklę. Antrasis būdas – programiškai generuoti vaizdus naudojant objektą „Canvas“.

4 skaidrė

Skaidrės aprašymas:

„Delphi“ turi specialų objektą, kuris suformatuotas kaip „Canvas“ nuosavybė. Jis pasiekiamas tik veikiant programai, todėl ją galima valdyti tik iš programos parašius reikiamą kodą Object Pascal kalba. Jei objektas turi drobės savybę, galite piešti ant jo paviršiaus. Tinkamiausi kandidatai šiam vaidmeniui yra pati forma ir specialus PaintBox komponentas.

5 skaidrė

Skaidrės aprašymas:

Drobės objekto ypatybės: rašiklis (plunksna) – savybė nubrėžti geometrinių formų linijas ir kraštelius. Rašiklis seka grafinio žymeklio komandas ir, savo ruožtu, turi savo įdėtas savybes: Spalva – apibrėžia linijos spalvą (juoda pagal nutylėjimą); Režimas - piešimo stilius (turi daug verčių, kurios čia nepateiktos); Style – linijos stilius, kuris gali turėti šias reikšmes: psSolid – solid (pagal nutylėjimą); psDosh – punktyrinė linija; psDot – punktyrinė linija; psDoshDot – punktyrinis brūkšnys (ir kitos savybės); Widh – linijos storis (numatytasis 1 pikselis);

6 skaidrė

Skaidrės aprašymas:

Teptukas (Brush) – savybė užpildyti formas, kurios turi šias įdėtas savybes: Spalva – teptuko spalva (numatytasis – balta); Stilius – teptuko ornamentas, kuris gali turėti šias reikšmes: bsClear – vientisa spalva; bsHorizontalios – horizontalios linijos; bsVertical - vertikalios linijos; bsFDiagonal – kairiosios įstrižainės linijos; bsBDiagonal - dešinės įstrižainės linijos; bsCross – ląstelė; bsDiagCross – įstrižinė ląstelė;

7 skaidrė

Skaidrės aprašymas:

Šriftas (Font) – teksto rodymo savybė, kuri turi šias įdėtas savybes: Spalva – simbolių spalva; Aukštis – šrifto aukštis pikseliais; Name – šrifto pavadinimas; Dydis – šrifto dydis; Style – šrifto stilius, kuris gali turėti šias reikšmes: fsBold – paryškintas; fsItalic – kursyvas fsPabrauktas – pabrauktas fsStrikeOut – perbrauktas;

8 skaidrė

Skaidrės aprašymas:

PenPos (Pen position) - savybė, skirta išsaugoti esamą piešimo padėtį (nustato rašiklio padėtį piešimo srityje tam tikru metu); Pikseliai - masyvo savybė, skirta rašyti ir nuskaityti atskirų piešimo srities taškų ("drobės") koordinates.

9 skaidrė

Skaidrės aprašymas:

Canvas objekto metodai MoveTo(x,y: integer) – perkelia rašiklį iš esamos padėties į tašką su nurodytomis x, y koordinatėmis nenubrėždamas linijos; LineTo(х.у: integer) - perkelia rašiklį iš esamos padėties į tašką su nurodytomis x, y koordinatėmis, nubrėždamas liniją; Arc(x1, y1, x2, y2, x3, y3, x4, y4: sveikasis skaičius) – nubrėžia elipsės lanką, įrašytą į stačiakampį, kurio koordinatės (x1, y1) ir (x2, y2). Lankas nustatomas per taškus (x3, y3) ir (x4, y4) einančios elipsės spinduliais;

10 skaidrės

Skaidrės aprašymas:

Chord(x1, y1, x2, y2, x3, y3, x4, y4: sveikasis skaičius) – nubrėžia elipsės stygą, kaip aprašyta lanko metodui; Elipsė(x1, y1, x2, y2: sveikasis skaičius) – nubrėžia elipsę, įrašytą į stačiakampį, kurio viršutinis kairysis kampas yra taške (x1, y1), o apatinis dešinysis kampas – taške (x2, y2); FillRect (Rect (x1, y1, x2, y2: integer)) – užpildo stačiakampį spalva, nurodyta esamame teptuke (Brush). Naudoja funkciją Rect, kuri reiškia stačiakampį nurodytomis koordinatėmis;

11 skaidrė

Skaidrės aprašymas:

FloodFill(x,y: sveikasis skaičius; Spalva: TColor; FillStyle: TFillStyle) - užpildymas esama spalva, nurodyta ypatybėje Brush: with FillStyle=fsBorder - uždara sritis nuo taško su x, y koordinatėmis iki ribos, apibrėžtos Spalvos spalva; su FillStyle=fsSurface – ta paviršiaus sritis, kurios spalva yra Spalva; Pie(x1, y1, x2, y2, x3, y3, x4, y4: sveikasis skaičius) – nubrėžia elipsės sektorių, įrašytą į stačiakampį su koordinatėmis (x1, y1) ir (x2, y2). Sektorių apibrėžia du elipsės spinduliai, einantys per taškus (x3, y3) ir (x4, y4);

12 skaidrė

Skaidrės aprašymas:

Polilinija (Points: array of TPoint) – nubrėžia poliliniją, nuosekliai sujungdama Points masyvo taškus; Daugiakampis (Points: array of TPoint) – piešia daugiakampius, nuosekliai sujungdamas Points masyvo taškus. Jis skiriasi nuo Polyline metodo tuo, kad automatiškai sujungia polilinijos pabaigą su jos pradžia; Stačiakampis (x1, y1, x2, y2: sveikas skaičius) - nubrėžia stačiakampį, kurio viršutinis kairysis kampas yra taške (x1, y1), o apatinis dešinysis kampas yra taške (x2, y2);

13 skaidrė

Skaidrės aprašymas:

Retresh – metodas iškviečiamas, kai reikia perbraižyti vaizdą; RoundRect (x1, y1, x2, y2, x3, y3: sveikasis skaičius) – nupiešia stačiakampį su užapvalintais kampais. Kampai nubrėžti kaip elipsės ketvirčiai, kurių plotis x3 ir aukštis y3; TextOut (x, y:integer, Text:String) – išveda tekstą, nurodytą parametre Text. Tekstas telpa į stačiakampį, kurio viršutiniame kairiajame kampe yra x, y koordinatės.

LABORATORINIS DARBAS

TEMA: « Grafika vidujeDelphi- paprasčiausios konstrukcijos
geometrinės figūros"

Trumpa informacija iš teorijos

„Delphi“ kūrėjui siūlo tris grafikos rodymo būdus:

    braižyti, kol programa veikia

    iš anksto sukurtos grafikos naudojimas

    vaizdų kūrimas naudojant grafinius komponentus

Braižymui sukurtos specialios klasės, kuriose pateikiami piešimo įrankiai ir metodai: įrankiai aprašomi trijose klasėse – Tfont, Tpen, Tbrush; piešimo sritį ir metodus pateikia Tcanvas klasė.

KlasėTfont- nustato šrifto, naudojamo tekstui ant drobės rodyti, charakteristikas. Klasės ypatybės aprašytos skyriuje „Pagrindinės daugelio komponentų savybės“.

Klasėtpen– nustato rašiklio (pieštuko), kuriuo brėžiamos linijos, charakteristikas.

Savybės klasė tpen:

spalva:Tcolor – linijos spalva (juoda pagal numatytuosius nustatymus)

Plotis:integer – linijos storis pikseliais;

stilius = (psSolid, psDash, psDot, psdashDot, psClear) – apibrėžia linijos stilių (ištisinis, brūkšninis, punktyrinis, brūkšninis taškas, nematomas)

KlasėŠepetėlis– nustato teptuko, kuriuo dažomi vaizdo paviršiai, charakteristikas.

Savybės klasė Šepetėlis:

spalva:Tcolor – teptuko spalva (numatytasis yra baltas)

stilius- teptuko ornamentas, gali turėti šias reikšmes:

BsSolid – vientisas dažymas

BsClear – be užpildymo

BsVertical – vertikalios linijos

BsBdiagonal – dešinės įstrižainės linijos

BsDiagCross – įstrižinė ląstelė

BsHorizontalios – horizontalios linijos

BsFdiagonal – kairiosios įstrižainės linijos

BsCross – ląstelė

Klasėaudiniai- apibrėžiamas paviršius, ant kurio dedamas sukurtas vaizdas, ir įrankiai, kuriais kuriamas vaizdas: šriftas, pieštukas, teptukas.

Pagal numatytuosius nustatymus visa formos kliento sritis naudojama kaip darbo sritis (drobė, „drobė“) (be pavadinimo, pagrindinio meniu ir formos slinkties eilučių), tačiau formoje galite priskirti mažesnes darbo sritis. naudojant komponentus dažų dėžė arba Vaizdas. Drobės kilmė yra viršutinis kairysis darbo zonos kampas, darbo zonos plotis nustatomas pagal nuosavybę ClientWidth, aukštis - nuosavybė ClientHeight.

Savybės klasė audiniai:

Drobė:Tcanvas – apibrėžia piešimo sritį

Šepetys:Tbrush - šepetys uždaroms formoms dažyti

Šriftas:Tfont – šriftas tekstui rodyti ant drobės

Rašiklis:Tpen - pieštukas (rašiklis) piešimui

PenPos:Tpoint – dabartinė nematomo žymeklio padėtis drobėje

komentuoti : T taško tipas – apibrėžiamas taip:

Įveskite Tpoint = įrašas

Pikseliai: Tcolor – nustato drobės pikselių spalvas, X, Y – pikselių koordinates. Savybė Pixels naudinga brėžiant grafikus naudojant pasirinktos spalvos taškus.

Pagrindiniai TCanvas klasės metodai

    procedūra Pereiti prie(x,y:sveikasis skaičius); - perkelia rašiklį nenubrėždamas linijos į tašką su koordinatėmis (x, y).

    procedūra LineTo(x,y:sveikasis skaičius); - nubrėžia liniją nuo dabartinio taško iki taško su koordinatėmis (x, y).

Pavyzdys : nubrėžkite mėlyną įstrižainę liniją ant figūros nuo viršutinio kairiojo figūros kampo iki apatinio dešiniojo kampo.

Pen.color:= clblue;

PerkeltiĮ(0,0); LineTo(kliento plotis, kliento aukštis);

    procedūra Stačiakampis(x1,y1,x2,y2:sveikasis skaičius); - nubrėžia stačiakampį: x1, y1 - viršutinio kairiojo kampo koordinatės; x2, y2 - apatinio dešiniojo kampo koordinatės.

Pavyzdys : figūros viduryje nubrėžkite 60 pikselių geltonai užpildytą kvadratą.

var Xc,Yc: sveikasis skaičius; //

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.color:=clyellow;

Drobė.stačiakampis(xc-30,Yc-30,xc+30,Yc+30);

    procedūra Elipsė(x1,y1,x2,y2:sveikasis skaičius); - nubrėžia elipsę, įrašytą į stačiakampį su nurodytomis koordinatėmis.

Pavyzdys : nubrėžkite elipsę, įrašytą į PaintBox komponentą.

PaintBox1.Canvas.Pen.Width:=4; //linijos plotis = 4 pikseliai

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

    procedūra Poligonas(); - nubrėžia uždarą daugiakampį, nurodytą koordinačių masyvu.

Pavyzdys : nubrėžkite užpildytą rombą, jungiantį figūros kraštinių vidurio taškus

Var Xc,Yc:sveikasis skaičius; // formuoti kliento zonos centro koordinates

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Drobė.Teptukas.Spalva:=Rgb(275,140,70); // Oranžinė spalva šešėliavimas

Drobė.Daugiakampis();

pabaiga;

    procedūra Arc(x1,y1,x2,y2,x3,y3,x4,y4: sveikasis skaičius); - rodomas elipsės lankas, apribotas stačiakampiu (x1, y1, x2, y2). Lankas rodomas nuo taško su koordinatėmis (x3,y3) iki taško su koordinatėmis (x4,y4) prieš valandos rodyklė.

Pavyzdys : nubrėžkite elipsės lanką, jungiantį komponento viršutinės pusės vidurį
PaintBox su dešinės pusės viduriu.

Procedūra Tform1.Button1Click(Siuntėjas:Tobėkas);

Var X3,y3,x4,y4: sveikasis skaičius;

Su PaintBox1 padaryti

Drobė.Pen.Color:= cWhite;

Drobė.Rašiklis.Plotis:= 3;

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

X3:= ClientWidth div 2;

X4:=Kliento plotis;

Y4:= ClientHeight div 2;

Drobė.Pen.Color:= clMaroon;

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

pabaiga;

    procedūra Akordas(x1,y1,x2,y2,x3,y3,x4,y4: sveikasis skaičius); - nubrėžia stygą - tiesę, jungiančią 2 elipsės taškus: tašką su koordinatėmis (x3, y3) su tašku (x4, y4).

Pavyzdys : pateiktame pavyzdyje pakeiskite ARC metodą Chord metodu ir gaukite šį rezultatą.

    procedūra Pyragas(x1,y1,x2,y2,x3,y3,x4,y4: sveikasis skaičius); - nubrėžia elipsės atkarpą, jungiančią elipsės centrą su koordinatėmis (x3,y3) ir (x4,y4).

Pavyzdys : pateikti pavyzdyje, pateiktame ARC metodui, PIE metodui ir gauti šį rezultatą.

    procedūra tekstas(x,y:sveikasis skaičius;Tekstas:eilutė); - rodo eilutę, perduotą parametre Text į stačiakampį, kurio viršutinis kairysis kampas nurodytas x,y koordinatėmis. Šrifto charakteristikos nustatomos šrifto įrankiu.

Pavyzdys : formos apačioje parašykite sukonstruoto grafiko pavadinimą.

Drobė.Šriftas.Aukštis:=20 ; // simbolio aukštis 20 pikselių

Canvas.Font.Color:=clblue;

Canvas.TextOut(10, ClientHeight-24, 'SIN(X) funkcijos grafikas');

Grafiniai komponentai

„Delphi“ siūlo daugybę jau paruoštų komponentų, kad pagerintų vartotojo sąsają. Šie komponentai pateikiami puslapyje Papildomas ir Sistema komponentų paletė.

KomponentasVaizdas(KlasėLaikas) – skirtas rodyti grafinius vaizdus, ​​saugomus išoriniuose failuose su plėtiniais:

    Piktograma (piktograma, piktograma);

    bmp (bitmap, bitmap);

    Wmf, .emf (metafailas);

    Jpg, .jpeg (JPEG suglaudintas vaizdas).

Pagrindinis savybių :

automatinis dydis:boolean – jei tiesa, komponentas pritaiko savo dydį pagal įkelto vaizdo dydį; klaidinga pagal nutylėjimą.

Ištempti:boolean - jei tiesa, įkelta reikšmė užima visą komponento plotą; numatytasis yra klaidingas.

Drobė:Tcanvas – naudojamas piešti komponento viduje vykdymo metu.

paveikslėlį:Tpicture – nurodo komponente įdėtą vaizdą.

Pagrindinis metodus klasė paveikslėlį:

procedūra LoadFromFile(failo pavadinimas:eilutė); - įkelia vaizdą į komponentą iš failo pavadinimu Filename.

procedūra SaveToFile(failo pavadinimas:eilutė); -išsaugo vaizdą iš komponento į failą pavadinimu Filename.

Komponentasdažų dėžė - apibrėžia stačiakampį plotą, kurį reikia piešti. Pagrindinis turtas yra Drobė, galimi visi Tcanvas klasės metodai, ji neturi nepriklausomų savybių.

Pavyzdys : nubrėžkite geltoną elipsę, įrašytą į PaintBox1 komponentą.

Procedūra Tform1Button1Click(sender:Object);

Su PaintBox1.Canvas padaryti

Brush.Color:=clyellow;

Elipsė(0,0,PaintBox1.ClientWidth,PaintBox1.ClientHeight);

pabaiga;

KomponentasBitBtn bitmap mygtukas

BitBtn mygtukas, skirtingai nei standartinis, be pavadinimo (antraštės) gali turėti ir ypatybės nurodytą vaizdą Glifas. Yra standartinių BitBtn mygtukų rinkinys su iš anksto nustatytomis savybėmis (su konkrečiu vaizdu, antrašte ir paskirtimi) – standartinio mygtuko tipas pasirenkamas per nuosavybę. malonus. Rūšis=(bkCustom, bkAbort,bkCancel, bkClose...)

Užduotis numeris 1

Sukurkite programą, kurioje yra du vaizdo komponentai ir 4 pagrindinės formos mygtukai („Įkelti vaizdą“, „Sukurti geometrinę formą“, „Keisti spalvą“, „Išeiti“) ir leidžianti:

a) įkelkite į „Image1“ komponentą vartotojo pasirinktą grafinį vaizdą taip, kad vaizdas užimtų visą vaizdo komponento plotą.

b) po komponentu Image1 parodykite užrašą „Tai vaizdas iš failo.

(bet kokiam komponento matmenų ir padėties matavimuiVaizdas1 užrašas turi būti
būti griežtai žemiau komponento).

c) nubrėžkite geometrinę figūrą Image2 komponento viduje: užpildytą elipsės atkarpą, jungiančią vaizdo komponento vidurį su vaizdo komponento apatinės ir dešinės pusės vidurio taškais.

(pakeitus komponento dydį ir padėtįVaizdas2, figūra turi būti pastatyta teisingai, t.y. pagal užduotį dėl komponentoVaizdas2)

d) vartotojo prašymu, naudojant ColorDialog komponentą, pakeiskite paveikslėlyje 2 nupieštos figūros linijos spalvą.

Užduotis numeris 2

Sukurkite programą, leidžiančią atsitiktinai įdėti kelias etiketes į vaizdo komponentą (pavyzdžiui, žodį „Ura!“). Norėdami įgyvendinti, naudokite atsitiktinių skaičių generatorių „Randomize“ ir „Random“ funkciją.

Vaizdo komponento matmenis, vaizde rodomą žodį ir žodžių skaičių turi įvesti vartotojas.

Užduotis numeris 3

Sukurkite programą, leidžiančią pasirinkti geometrinės figūros pavadinimą iš sąrašo laukelio ir nubrėžti pasirinktą figūrą vaizdo komponente. Formos spalva parenkama iš RadioGroup komponento.

Užduotis numeris 4

PaintBox1 komponentą padalinkite į 4 lygias dalis, kiekvieną dalį nudažykite skirtinga spalva, pavyzdžiui: mėlyna, geltona, žalia, raudona.

Šalia kiekvieno PaintBox1 kampo parašykite to kampo koordinates (palyginus su PaintBox1 komponento figūros kilme).

Užduotis numeris 5

NUO

pasirinkite nupieštos figūros tipą iš komponento Radiogroup1, užpildymo spalvą iš komponento Radiogroup2 ir nubrėžkite pasirinktą figūrą į Image komponentą.

Užduotis numeris 6

Sukurkite programą, leidžiančią vartotojui nustatyti PaintBox1 komponento matmenis (pikseliais).

PaintBox1 komponentą padalinkite į 2 lygias dalis, kiekvienos dalies viduje nubrėžkite elipsę, užpildytą vartotojo pasirinkta spalva ColorDialog.

Užduotis numeris 7

NUO sukurti programą, kuri leidžia:

pasirinkite geometrinės figūros pavadinimą iš sąrašo laukelio ir nubrėžkite pasirinktą figūrą elemente Vaizdas. Forma turi būti užpildyta spalva, kurią vartotojas pasirinko ColorDialog komponente, jei RadioGroup komponente pasirinkta Taip.

Užduotis numeris 8

Sukurkite programą, leidžiančią vartotojui nustatyti PaintBox1 komponento matmenis (pikseliais).

PaintBox1 komponentą padalinkite į 4 lygias dalis, kiekvienos dalies viduje nubrėžkite skirtingą geometrinę figūrą (elipsę, rombą, trikampį ir stačiakampį). Kiekvienos formos spalvą vartotojas pasirenka ColorGrid.

Užduotis numeris 9

iš sąrašo laukelio pasirinkite geometrijos pavadinimą
formuoti (elipsė, rombas, stačiakampis) ir piešti
Pasirinkta figūra komponente Vaizdas. Vieta
figūros vaizdo komponente (I ketvirtis, II ketvirtis,

III arba IV ketvirtį) ir pasirenkama figūros užpildymo spalva
iš RadioGroup komponentų.

Užduotis numeris 10

Sukurkite programą, leidžiančią vartotojui nustatyti PaintBox1 komponento matmenis (pikseliais).

Numatykite, kad kraštinės dydis negali būti tekstas, negali būti neigiamas skaičius ir negali viršyti mažesnio formos dydžio.

PaintBox1 komponentą padalinkite į 4 lygias dalis, kiekvienos dalies viduje nubrėžkite vartotojo pasirinktą geometrinę figūrą Combobox (elipsė, rombas, trikampis ir stačiakampis). Formos spalvą vartotojas pasirenka ColorBox.

Užduotis numeris 11

Sukurkite programą, kuri leidžia:

pasirinkite brėžinio vietą iš radijo grupės komponento

stačiojo trikampio vaizdo komponente nustatykite
formos užpildymo spalva arba kontūro spalva, priklausomai nuo
įjungiant žymimuosius langelius. Spalvos pasirinkimas per
ColorGrid komponentas.

Užduotis numeris 12

Sukurkite programą, leidžiančią vartotojui nustatyti PaintBox1 komponento matmenis (pikseliais).

Numatykite, kad kraštinės dydis negali būti tekstas, negali būti neigiamas skaičius ir negali viršyti mažesnio formos dydžio.

PaintBox1 komponentą padalinkite į 2 lygias dalis, vienos iš dalių viduje nubrėžkite vartotojo pasirinktą geometrinę figūrą Combobox (elipsė, rombas, trikampis ir stačiakampis). Formos spalvą vartotojas pasirenka ColorBox.

Pavyzdžiui, formos spalvą galite pakeisti taip:

forma1.Spalva:= ColorBox1.Colors;

Užduotis numeris 13

Sukurkite programą, kuri leidžia:

a) figūros viduryje nubrėžkite kvadratą (kvadrato kraštinės dydį įveda vartotojas). Numatykite, kad kraštinės dydis negali būti tekstas, negali būti neigiamas skaičius ir negali viršyti mažesnio formos dydžio.

b) padalinkite kvadratą viena arba dviem įstrižainėmis, atsižvelgiant į žymimąjį laukelį, ir kiekvieną gautą trikampį nudažykite skirtinga spalva. Spalvą pasirenka vartotojas.

Užduotis numeris 14

Sukurkite programą, leidžiančią vartotojui nustatyti PaintBox1 komponento matmenis (pikseliais).

Numatykite, kad kraštinės dydis negali būti tekstas, negali būti neigiamas skaičius ir negali viršyti mažesnio formos dydžio.

Padalinkite PaintBox1 komponentą į 2 lygias dalis, vienos dalies viduje nubrėžkite rombą, o kitos dalies viduje nubrėžkite bet kokį trikampį. Formos spalvą vartotojas pasirenka ColorBox.

Pavyzdžiui, formos spalvą galite pakeisti taip:

forma1.Spalva:= ColorBox1.Colors;

Užduotis numeris 15

Sukurkite programą, kuri leidžia:

a) nustatykite vaizdo komponento matmenis horizontaliai ir vertikaliai taip, kad jie būtų vienodi ir lygūs skaičiui, kurį vartotojas įvedė iš klaviatūros;

(numatykite, kad kraštinės dydis negali būti tekstas, negali būti neigiamas skaičius ir negali viršyti mažesnio formos dydžio)

b) padalinkite Image komponentą į 4 vienodus kvadratus su dviem mėlynomis linijomis;

c) kiekvieno gauto kvadrato viduje nubrėžkite jame įrašytą apskritimą (apskritimų spalvą vartotojas gali pasirinkti per spalvų pasirinkimo dialogo langą).

Užduotis numeris 16

Sukurkite programą, leidžiančią vartotojui nustatyti PaintBox1 komponento matmenis (pikseliais).

Numatykite, kad kraštinės dydis negali būti tekstas, negali būti neigiamas skaičius ir negali viršyti mažesnio formos dydžio.

PaintBox1 komponentą padalinkite į 9 lygias dalis ir kiekvieną gautą šaškių lentos stačiakampį nuspalvinkite. Užpildymo spalvą pasirenka vartotojas ColorBox.

Pavyzdžiui, formos spalvą galite pakeisti taip:

forma1.Spalva:= ColorBox1.Colors;

Užduotis numeris 17

Formoje įdėkite du vaizdo komponentus ir keturis mygtukus: linijos spalva, užpildymo spalva, gerai ir išeiti; ir Redaguoti komponentą.

Spustelėjus mygtuką Gerai, 1 paveikslėlis nupiešia kvadratą su X kraštine, o 2 paveikslėlis nupieši stačiakampį trikampį su lygiomis kojomis, kurių kiekvieno ilgis yra X.

Trikampio viršūnė sutampa su Vaizdo2 kilme. Viena iš kvadrato viršūnių sutampa su Image1 kilme.

Mygtukas Gerai tampa pasiekiamas tik tada, kai pasirenkama linijos spalva ir užpildo spalva figūrai piešti.

X – pasirenka atsitiktinai, naudojant funkciją Atsitiktinis, o X reikšmės reikšmė turi būti rodoma redagavimo komponente.

Užduotis numeris 18

Sukurkite programą, leidžiančią vartotojui nustatyti PaintBox1 komponento matmenis (pikseliais).

PaintBox1 komponentą padalinkite į 4 lygias dalis, vartotojo pasirinktos dalies viduje turi būti pastatytas užpildytas apskritimas, kurio dydį nustato vartotojas. Vartotojas pasirenka užpildymo spalvą ColorBox.

Pavyzdžiui, formos spalvą galite pakeisti taip:

forma1.Spalva:= ColorBox1.Colors;

Grafinės informacijos rodymo komponentų sąrašas

Norėdami parodyti grafinę informaciją, Delphi biblioteka pateikia komponentus, kurių sąrašas pateiktas 4.1 lentelėje.

4.1 lentelė Grafinės informacijos rodymo komponentų piktograma

Komponentas

Puslapis

apibūdinimas

Vaizdas (vaizdas)

Naudojamas grafikai rodyti: piktogramoms, bitmaps ir metafailams.


PaintBox (langas piešimui)

Naudojamas formoje sukurti sritį, kurioje galite piešti.


DrawGrid (braižybos lentelė)

Naudojamas netekstiniams duomenims rodyti eilutėse ir stulpeliuose.


Diagrama (diagramos ir grafikai)

Komponentas priklauso TChart komponentų šeimai, kuri naudojama diagramoms ir diagramoms kurti.


Taip pat galite rodyti ir įvesti grafinę informaciją bet kurios drobės paviršiuje.

Drobė Drobė nėra komponentas, todėl, griežtai tariant, jis neturėtų būti laikomas šios knygos apimtimi. Tačiau kadangi daugelis komponentų, ypač formos, turi drobę ir drobė suteikia galimybę rodyti įvairią grafinę informaciją, vis tiek patartina pateikti šiek tiek pradinės informacijos apie drobę.

Drobė yra komponento sritis, kurioje galite piešti arba rodyti baigtus vaizdus. Jame yra savybių ir metodų, kurie labai supaprastina Delphi grafiką. Visos sudėtingos sąveikos su sistema vartotojui yra paslėptos, todėl visiškai neišmanantis kompiuterinės grafikos žmogus gali piešti Delphi.

Kiekvienas drobės taškas turi koordinates X ir Y. Drobės koordinačių sistema, kaip ir visur kitur Delphi, prasideda viršutiniame kairiajame drobės kampe. Koordinatė X didėja judant iš kairės į dešinę, ir koordinatė Y- judant iš viršaus į apačią. Koordinatės matuojamos pikseliais. Pikselis yra mažiausias elementas piešinio paviršiuje, kuriuo galima manipuliuoti. Svarbiausia pikselio savybė yra jo spalva.

Drobė turi nuosavybę Pikseliai. Ši savybė yra 2D masyvas, valdantis drobės spalvas. Pavyzdžiui, Drobė. Pikseliai atitinka 10-to iš kairės ir 20-to iš viršaus pikselio spalvą. Pikselių masyvas gali būti traktuojamas kaip bet kokia savybė: pakeiskite spalvą suteikdami pikseliui naują reikšmę arba nustatykite jo spalvą pagal jame saugomą reikšmę. Pavyzdžiui, Drobė. Pikseliai: = 0 arba Drobė. Pikseliai :=clJuoda- tai užduotis juodam pikseliui.

Nuosavybė Pikseliai galima naudoti piešimui ant drobės. Pabandykime ant formos drobės nupiešti sinusinės bangos grafiką pikseliais po pikselių. Norėdami tai padaryti, formos įvykių tvarkyklėje OnPaint(brėžinys) galite įterpti šį kodą:

Tform1. FormPaint(Siuntėjas: TObject);

var,Y: tikras; // funkcijų koordinates,PY: longint; // pikselių koordinates

pradėti:=clBalta;

dėl PX:=0 į ClientWidth daryti

(X – siužeto argumentas,

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

(PY – pikselių koordinatė,

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

(Nustato pasirinktos spalvos spalvą

pikselis (apie ryškumą) ). Pikseliai:=0;

pabaiga;

Paleiskite šią bandomąją programą ir pamatysite rezultatą, parodytą 4.1 pav. a. Sinusoidinis grafikas pasirodė, nors ir nelabai geras, nes. suskirstyti į atskirus taškus – pikselius.

Drobė – klasės objektas TCanvas turi daug metodų, leidžiančių nubrėžti grafikus, linijas, figūras naudojant nuosavybę Rašiklis- plunksna. Ši savybė yra objektas, kuris savo ruožtu turi daugybę savybių. Vienas iš jų – jums jau žinomas turtas spalva- spalva, su kuria pritaikytas piešinys. Antrasis turtas yra Plotis(linijos plotis). Plotis nurodomas pikseliais. Numatytasis plotis yra 1.

Nuosavybė stilius apibrėžia linijos tipą. Ši savybė gali turėti šias reikšmes:

Drobė turi savybę PenPos tipo TPoint(cm .). Ši savybė nustato dabartinę rašiklio padėtį drobės koordinatėse. Rašiklio judinimas nenubrėžiant linijos, t.y. pakeisti PenPos, pagamintas drobės metodu Perkelti Į(X,Y).Čia ( X, Y) - taško, kuriame juda rašiklis, koordinates. Šis dabartinis taškas tampa atskaitos tašku, nuo kurio taikomas metodas Linija į (X, Y) galite nubrėžti liniją į tašką su koordinatėmis ( X, Y). Tai perkelia esamą tašką į linijos ir naujo skambučio pabaigos tašką LineTo nubrėžs tašką iš šio naujo dabartinio taško.

Pabandykime pieštuku nubrėžti sinuso grafiką iš ankstesnio pavyzdžio. Šiuo atveju formos įvykių tvarkytuvė OnPaint gali atrodyti taip:

procedūra Tform1. FormPaint(Siuntėjas: TObject);

var,Y: tikras; // funkcijų koordinates,PY: longint; // pikselių koordinates

pradėti:=clBalta;. MoveTo(0,ClientHeight div 2);

dėl PX:=0 į ClientWidth daryti

(X – siužeto argumentas,

atitinka pikselį su px koordinate):=PX*4*Pi/ClientWidth;:=Sin(X);

(PY – pikselių koordinatė,

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

(Diagramoje nubrėžta linija). LineTo(PX,PY);

Šios versijos programos rezultatą galite pamatyti 4.1 b pav. Kaip matote, grafiko kokybė gerokai pagerėjo.

Rašikliu galima piešti ne tik tiesias linijas, bet ir formas. Išsamų rašikliu pagrįstų drobės metodų sąrašą rasite integruotame Delphi žinyne. Tuo tarpu kaip pavyzdį pateiksime tik vieną iš jų - Elipsė A, kuri nubrėžia elipsę arba apskritimą. Jis deklaruojamas kaip

procedūra Elipsė(X1, Y1, X2, Y2: sveikas skaičius);

kur parametrai X1, X2, Y1, Y2 apibrėžkite elipsę ar apskritimą apibūdinančio stačiakampio koordinates. Pavyzdžiui, operatorius

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

nubraižys apskritimą, kurio skersmuo 10 ir centro koordinatės (15, 45).

Formos paprastai piešiamos ne tuščios, o užpildomos naudojant drobės savybę Šepetys- šepetys. Nuosavybė Šepetys yra objektas, kuris savo ruožtu turi daugybę savybių. Nuosavybė spalva apibrėžia užpildymo spalvą. Nuosavybė stilius apibrėžia užpildymo šabloną (brūkšniavimą). Numatytoji reikšmė stilius lygus bsTvirtas, o tai reiškia vientisą spalvą spalva.

Prie rašiklio Rašiklis Yra dar vienas turtas, kurio dar nesvarstėme. Šis turtas yra režimu(režimas). Numatytoji reikšmė Režimas = pmCopy. Tai reiškia, kad linijos nubrėžtos savybėje nurodyta spalva spalva. Tačiau galimi ir kiti režimai, kuriuose atsižvelgiama ne tik į spalvą spalva, bet ir atitinkamų fono pikselių spalvą. Įdomiausias iš šių režimų yra režimas pmNotXor- fono papildymas atvirkštine išskirtine ARBA. Jei nustatytas šis režimas, tada toje pačioje drobės vietoje vėl piešiant tą pačią figūrą pašalinamas anksčiau nupieštas vaizdas ir atkuriamos pikselių spalvos, kurios buvo prieš pirmą figūros piešimą.

Šis režimo bruožas pmNotXor gali būti naudojamas kuriant paprastas animacijas. Pakanka ką nors nupiešti, tada ištrinti piešinį, perpiešti jį šiek tiek pakeistą - ir piešinys atrodys atgys.

Pabandykite padaryti sau paprastą animaciją – judantį ratą. Paleiskite naują programą ir eikite į skyrių įgyvendinimasįterpti skelbimą

X,Y: sveikasis skaičius;

Taip bus pristatyti pasauliniai kintamieji X ir Y- dabartinės vaizdo koordinatės.

Formos renginyje OnPaintįterpti teiginius

Šepetys. Spalva:=clWhite;:=clWhite;. Rašiklis. Režimas:=pmNotXor;

Pirmasis iš šių operatorių nustato šepetėlio spalvą į baltą. Šepetys. Taigi jūsų apskritimas viduje bus nudažytas balta spalva. Antrasis teiginys nustato formos paviršiaus fono spalvą į baltą.

Trečiasis teiginys nustato rašiklio režimą pmNotXor, kuri leis ištrinti seną vaizdą prieš piešdami naują.

Net ir paprasčiausią animaciją reikia sinchronizuoti. Priešingu atveju judėjimo greitį lems kompiuterio greitis. Todėl perkelkite komponentą į formą laikmatis- laikmatis iš sistemos. Šis komponentas aprašytas 5.7 skyriuje .

Čia galite pamatyti išsamų jo aprašymą. Kol kas nustatykite jo nuosavybę Intervalas lygus, pavyzdžiui, 30 (tai yra išlikimo laikas milisekundėmis, bet tikrasis laukimo laikas bus ilgesnis – žr. 5.7 skyrių) ir nustatykite ypatybę Įjungtas lygus klaidinga(tai reiškia, kad paleidus programą laikmatis neįsijungs automatiškai).

Šio komponento įvykių tvarkyklėje Įjungimo laikmatisįterpti teiginius

// Ištrinti seną vaizdą. Elipsė (X-5, Y, X+5, Y-1Q);(X);

// Nupieškite naują vaizdą. Elipsė (X-5, Y, X+5, Y-10);

// Sustabdyti, kai pasiekiama formos pabaiga

jeigu(X >= Kliento plotis-20) tada. įjungta:=false;

Pirmasis iš šių operatorių brėžia apskritimą toje vietoje, kur jis buvo nubrėžtas anksčiau, t.y. ištrina ankstesnį vaizdą.

Paskutinis teiginys sustabdo vaizdą formos krašte.

Dabar pridėkite mygtuką prie formos. mygtuką ir ant jo esančioje paspaudimų tvarkyklėje įdėkite operatorius

X: =10;: =100;. Elipsė (X-5, Y, X+5, Y-10); įjungta:=tiesa;

Pirmieji du operatoriai nustato pradines apskritimo koordinates. Trečiasis teiginys nubrėžia apskritimą pradinėje padėtyje, o ketvirtasis paleidžia laikmatį.

Išverskite programą, paleiskite ją, spustelėkite mygtuką. Pamatysite apskritimo vaizdą, judantį per formą iš kairės į dešinę. Tada prijunkite savo vaizduotę ir paverskite šią nelabai įdomią programą kažkuo įdomesniu.

Drobėje galite rodyti ne tik programiškai sukurtus, bet ir grafiniuose failuose saugomus vaizdus. Tik pati drobė neturi vaizdo įkėlimo iš failo metodo. Todėl failas turi būti įkeltas į kokį nors kitą grafinį objektą, galintį priimti informaciją iš grafinių failų. Ir tada perrašykite vaizdą iš šio objekto į drobę naudodami drobės metodą Lygiosios. Jo aprašymas:

Draw(X, Y: sveikasis skaičius; grafika: TGraphic);

Čia parametrai X ir Y nustatyti vaizdo išdėstymo drobėje viršutinio kairiojo kampo koordinates, a Grafika- objektas, kuriame saugoma informacija. Toks objektas gali būti, pavyzdžiui, tipo objektas TBitMap, skirtas bitų matricoms saugoti. Pažiūrėkime, kaip visa tai atrodo praktiškai.

Atidarykite naują programą, vilkite komponentą į formą OpenPictureDialog iš puslapio Dialogai (tai yra grafinių failų atidarymo dialogo komponentas – žr. 8.2 skyrių ) ir mygtuką mygtuką. Įrašas OpenPictureDialog bet kurioje formos vietoje, nes šis komponentas nėra vizualinis, ir įdėkite mygtuką formos apačioje. Įveskite šį kodą mygtuko paspaudimo tvarkyklėje:

procedūra Tform1. Button1Click(Siuntėjas: TObject);

var:TBitMap;

// Vartotojo pasirenkamas grafinis failas

jeigu OpenPictureDialog1. Vykdyti tada

// Sukurkite TBitMap tipo BitMap objektą:=TBitMap. kurti;

// Perkelkite vaizdą į formos drobę. Draw(10, 10, bitmap);

// Sunaikinti BitMap objektą. Laisvas;

pabaiga;

Šis kodas sukuria laikiną tipo objektą TBitMap Su vardu bitmap. Tada iškviečiamas grafinio failo atidarymo dialogas. OpenPictureDialog1 ir, jei vartotojas pasirinko failą, jis įkeliamas į bitmap metodas LoadFromFile. Tada metodas Lygiosiosįkeltas vaizdas nukopijuojamas ant drobės srityje su viršutinio kairiojo kampo koordinatėmis (10,10). Po to laikinas objektas bitmap yra sunaikintas.

Paleiskite programą ir spustelėkite jos mygtuką. Pamatysite, kad galite įkelti bet kokio tipo grafinį failą. bmp ir jis bus rodomas formos drobėje (žr. 4.2 pav. a). Grafinius failus galite rasti kataloge Vaizdai. Delphi 5 ir 4 jis paprastai yra kataloge. \program files\Common Files\Borland Shared. Delphi 3 jis yra kataloge. \program files\Borland\Delphi 3, o Delphi 1 - kataloge Delphi 16. Vaizdų kataloge visų pirma yra \Images\Splash\16Color\ pakatalogis, kuriame saugomas failas, įkeltas pagal 4.2 pav.

Sukūrėte gražią programą grafiniams failams peržiūrėti. Bet dabar pabandykime pamatyti pagrindinį jo trūkumą. Neuždarydami programos eikite į kitą programą, pavyzdžiui, grįžkite į „Delphi“. Tada nieko nedarydami grįžkite į veikiančią programą. Jei programos, kurią palikote, langas visiškai uždengė jūsų programos langą, tada grįžę į jį pamatysite, kad paveikslėlis lange dingo. Jei jūsų programos langas sutampa tik iš dalies, grįžę į programą galite pamatyti rezultatą, panašų į parodytą 4.2 pav. b.

Matote, kad jei kitos programos langas laikinai persidengia su jūsų programos langu, tada formos drobėje nupieštas vaizdas yra sugadintas. Pažiūrėkime, kaip galime ištaisyti šį trūkumą.

Jei langas buvo uždengtas ir vaizdas sugadintas, operacinė sistema praneša programai, kad kažkas pasikeitė aplinkoje ir programa turi imtis atitinkamų veiksmų. Kai tik reikia atnaujinti langą, jam sugeneruojamas įvykis OnPaint. Šio įvykio tvarkyklėje (mūsų atveju formos įvykyje) turime perbraižyti vaizdą.

Perbraižyti galima įvairiais būdais, priklausomai nuo programos. Mūsų pavyzdyje galime pateikti kintamojo deklaraciją bitmap(operatorius var BitMap: TBitMap) už aukščiau nurodytos procedūros ribų, t.y. paverskite šį kintamąjį visuotiniu įdėdami jį tiesiai į skyrių įgyvendinimas. operatorius bitmap. Laisvas galima perkelti į formos įvykių tvarkyklę OnDestroyįvyksta, kai programa uždaroma. Tada per visą programos vykdymo laiką komponente turėsite paveikslėlio kopiją bitmap ir jums tereikia įvesti įvykių tvarkyklę OnPaint sudaro tik vieną operatorių:

Draw(10, 10, bitmap);

Atlikite tai ir pamatysite, kad vaizdas formoje nepablogės, kai langai persidengia.

Be svarstomo metodo Lygiosios drobė turi kitą kopijavimo būdą CopyRect:

CopyRect(Paskirtis: TRect; Canvas: TCanvas; Šaltinis: TRect);

Metodas nukopijuoja nurodytą parametrą Šaltinis vaizdo sritis vaizdo šaltinio drobėje Drobėį nurodytą Paskšios drobės plotas. Tipas TRect charakterizuojantys stačiakampius plotus Šaltinis ir Pask, jau aprašyta 3.2 skyriuje .

Pavyzdžiui, operatorius

CopyRect(MyRect2, Bitmap.Canvas, MyRect1);

kopijos į formos drobę srityje MyRect2 vaizdas iš srities MyRect1 komponentinė drobė bitmap.

Kopijavimo būdas CopyRect pagamintas nuosavybės nustatytu režimu Kopijavimo režimas. Pagal numatytuosius nustatymus ši nuosavybė nustatyta į cmSrcCopy, o tai reiškia, kad tiesiog pakeisite anksčiau šioje srityje esantį vaizdą Pask, ant nukopijuoto paveikslėlio. Kitos galimos vertės Kopijavimo režimas leidžia derinti vaizdus, ​​tačiau jų svarstymas nepatenka į šios knygos taikymo sritį.

Mes apsiribosime šia pagrindine informacija apie grafinės informacijos išvedimą ant drobės. 3.2 skirsnis buvo pranešta informacija apie teksto išvedimą į drobę. Apskritai drobė yra sudėtingas objektas, turintis daug daugiau savybių ir metodų. Tačiau tam reikia išsamios diskusijos, kuri nepatenka į šios knygos taikymo sritį. Kitoje serijos Viskas apie Delphi knygoje šios problemos bus nagrinėjamos išsamiau.

Lango komponentas, turintis savybę Drobė- drobė.

Vaizdo ir „PaintBox“ komponentai

Komponentai Vaizdas ir dažų dėžė vaizduoti tam tikrą ribotą paviršių drobe, ant kurio galima įvesti vaizdus, ​​kaip aprašyta 4.2 skyriuje . Tuo pačiu metu komponentas dažų dėžė, tiesą sakant, neduoda nieko naujo, lyginant su piešimu ant formos drobės. Piešimas toliau dažų dėžė vietoj formos, neturi jokio pranašumo, išskyrus galbūt tam tikrą palengvėjimą vieno ar kelių brėžinių išdėstymo lango srityje.

Tačiau be šių galimybių, komponentas Vaizdas yra ypatybių, leidžiančių dirbti su įvairių tipų grafiniais failais.Palaiko trijų tipų failus – bitmaps, ikonas ir metafailus. Visi trys failų tipai saugo vaizdus; Skirtumas slypi tik tame, kaip jie saugomi failuose, ir prieigos prie jų priemonės. Bitmap (failas su plėtiniu . bmp) rodo kiekvieno vaizdo pikselio spalvą. Tuo pačiu metu informacija yra saugoma taip, kad bet kuris kompiuteris galėtų rodyti vaizdą su jo konfigūraciją atitinkančia raiška ir spalvų skaičiumi.

Piktogramos (failai su plėtiniu . ico) yra mažos bitų matricos. Jie plačiai naudojami žymėti programų piktogramas, greituosiuose mygtukuose, meniu punktuose, įvairiuose sąrašuose. Vaizdų saugojimo piktogramose būdas yra panašus į informacijos saugojimą taškuose, tačiau yra skirtumų. Visų pirma, piktogramos mastelio negalima keisti, ji išlaiko dydį, kuriuo buvo sukurta.

Metafailai saugo ne bitų, sudarančių vaizdą, seką, o informaciją apie tai, kaip vaizdas buvo sukurtas. Juose saugomos piešimo komandų sekos, kurios gali būti kartojamos atkuriant vaizdą. Dėl to tokie failai paprastai yra kompaktiškesni nei bitmaps.

Komponentas Vaizdas leidžia rodyti informaciją, esančią visų nurodytų tipų grafiniuose failuose. Už tai jos turtas paveikslėlį- tipo objektas TPvaizdas.

4.3 pav Paveikslėlių rengyklės langas


Norėdami susipažinti su šia nuosavybe, atidarykite naują programą ir perkelkite komponentą į formą Vaizdas. Ištempkite jį arba nustatykite jo savybę Lygiuoti lygus alClient kad ji užimtų visą formos kliento sritį. Spustelėkite mygtuką su elipsiu šalia nuosavybės paveikslėlį Objektų inspektoriaus lange arba tiesiog dukart spustelėkite Vaizdas. Prieš jus atsidarys paveikslėlių rengyklės langas (4.3 pav.), kuriame galėsite įkelti į nuosavybę paveikslėlį kurį nors grafinį failą (mygtukas Įkelti), taip pat išsaugokite atidarytą failą nauju pavadinimu arba naujame kataloge. Spustelėkite Įkelti, kad įkeltumėte grafinį failą. Pamatysite grafinio failo atidarymo langą, parodytą 4.4 pav. Perkeliant žymeklį grafinių failų sąraše, dešiniajame lange rodomos juose esančios nuotraukos, o virš jų - skaičiai, apibūdinantys failo dydį. paveikslėlį. Galite pasirinkti bet kokio tipo grafinį failą, kurio jums reikia. Prisiminkite, kad su Delphi pateiktus grafinius failus galite rasti kataloge Vaizdai. Delphi 5 ir 4 jis paprastai yra kataloge. \program files\Common Files\Borland Shared. Delphi 3 jis yra kataloge. \program files\Borland\Delphi 3, o Delphi 1 - kataloge Delphi 16. Kai failas bus įkeltas, spustelėkite Gerai paveikslėlių rengyklės lange ir savo komponente Vaizdas bus rodomas jūsų pasirinktas vaizdas. Galite paleisti programą ir ja grožėtis. Tačiau jūs jau matote paveikslėlį, net nepaleidę programos.

Kai projektavimo metu įkėlėte vaizdą iš failo į komponentą Vaizdas, jis ne tik rodomas, bet ir išsaugomas programoje. Tai suteikia galimybę išsiųsti programą be atskiro grafinio failo. Tačiau, kaip matysime vėliau, Vaizdas Taip pat galite įkelti išorinius grafikos failus, kai programa veikia.

Grįžkime prie komponento savybių svarstymo Vaizdas.

Jei nustatote nuosavybę automatinis dydis in tiesa, tada komponento dydis Vaizdas automatiškai prisitaikys prie įdėto vaizdo dydžio. Jei turtas automatinis dydisįdiegta klaidinga, tada vaizdas gali netilpti į komponentą arba, atvirkščiai, komponento plotas gali būti daug didesnis nei vaizdo plotas.

Kitas turtas - Ištempti leidžia pritaikyti ne komponentą prie nuotraukos dydžio, o paveikslėlį pagal komponento dydį. Diegti automatinis dydis in klaidinga, ištempti arba susitraukti komponento dydis Vaizdas ir įdiegti Ištempti in tiesa. Pamatysite, kad brėžinys užims visą komponento plotą, tačiau mažai tikėtina, kad bus realiai nustatyti matmenys Vaizdas tiksliai proporcingas nuotraukos dydžiui, vaizdas bus iškraipytas. Diegti Ištempti in tiesa gali būti prasminga tik kai kuriems modeliams, bet ne paveikslėliams. Nuosavybė Ištempti neturi įtakos miniatiūroms, kurių dydis negali būti pakeistas.

Nuosavybė - centras nustatyti tiesa, centruoja vaizdą srityje Vaizdas jei komponento dydis yra didesnis nei nuotraukos dydis.

Apsvarstykite kitą nuosavybę - Skaidrus(skaidrumas). Jeigu Skaidrus lygus tiesa, tada vaizdas Vaizdas tampa skaidrus. Tai gali būti naudojama vaizdams perdengti vienas ant kito. Antrąjį komponentą uždėkite ant formos Vaizdas ir įkelkite į jį kitą vaizdą. Tiesiog pabandykite padaryti šiek tiek užpildytą, kontūrinį vaizdą. Pavyzdžiui, galite nufotografuoti iš tų, kurie paprastai yra ant mygtukų, pavyzdžiui, rodyklės (failas.\programos failai\bendrieji failai\borland shared\images\buttons\arrow1l.bmp). Perkelkite savo Vaizdas kad jie perdengtų vienas kitą ir viršutiniame komponentų rinkinyje Skaidrus lygus tiesa. Pamatysite, kad viršutinė nuotrauka nebeužstoja apatinės. Vienas iš galimų šios savybės pritaikymo būdų yra užrašų uždėjimas ant vaizdo, padarytos bitų matricos pavidalu. Šiuos užrašus galima padaryti naudojant įmontuotą Delphi Image Editor programą.

Atkreipkite dėmesį, kad turtas Skaidrus taikoma tik bitų matricoms. Tuo pačiu metu apatinio kairiojo taško taško spalva pagal numatytuosius nustatymus yra skaidri (ty pakeičiama žemiau esančio vaizdo spalva).

Mes žiūrėjome į vaizdo įkėlimą iš failo projektavimo proceso metu. Bet nuosavybė paveikslėlį taip pat leidžia lengvai organizuoti mainus su bet kokio tipo grafiniais failais vykdant programą. Norėdami paaiškinti tokio keitimo techniką, pirmiausia turime išsamiau apsvarstyti nuosavybę paveikslėlį.

Ši savybė yra objektas, kuris savo ruožtu turi antrines ypatybes, nukreipiančias į saugomą grafinį objektą. Jei į paveikslėlį bitų matrica yra saugoma, ją nurodo savybė paveikslėlį. bitmap. Jei piktograma saugoma, ją nurodo nuosavybė paveikslėlį. piktogramą. Į saugomą metafailą nurodo ypatybė paveikslėlį. Metafailas. Galiausiai savybė nurodo savavališko tipo grafinį objektą paveikslėlį. Grafika.

Objektas paveikslėlį ir jo savybes bitmap, piktogramą, Metafailas ir Grafika turėti failų skaitymo ir rašymo metodus LoadFromFile ir SaveToFile:

procedūra LoadFromFile( konst failo pavadinimas: styga);

procedūra SaveToFile( konst failo pavadinimas: styga);

Dėl savybių paveikslėlį. bitmap, paveikslėlį. piktogramą ir paveikslėlį. Metafailas failo formatas turi atitikti objekto klasę: bitmap, icon, metafile. Skaitant failą į nuosavybę paveikslėlį. Grafika failas turi būti metafailo formatu. Ir dėl paties objekto paveikslėlį skaitymo ir rašymo metodai automatiškai pritaikomi prie failo tipo. Paaiškinkime tai pavyzdžiu.

Sukurkime programą, panašią į grafinių failų peržiūros pavyzdį, aptartą 4.2 skyriuje. Norėdami pakeisti, galite organizuoti jo valdymą ne mygtuku mygtuką, bet meniu. Įdėkite komponentą ant formos Vaizdas. Ištempkite jį arba nustatykite jo savybę Lygiuoti lygus alClient kad ji užimtų visą formos kliento sritį. Vilkite grafinio failo atidarymo dialogo komponentą į formą OpenPictureDialog(žr. 8.2 skyrių ). Formoje taip pat įdėkite pagrindinio meniu komponentą Pagrindinis meniu(žr. 6.1 skyrių ) ir joje nustatykite vieną skyrių – Failas. Šio skyriaus tvarkyklėje parašykite pareiškimą

(OpenPictureDialog1.Execute) tada. paveikslėlį. LoadFromFile(.FileName);

Šis operatorius iškvies dialogo langą grafiniam failui atidaryti (žr. 4.4 pav.) ir įkels į komponentą Vaizdas1 vaizdas iš vartotojo pasirinkto failo (žr. 4.5 pav.). Be to, failas gali būti bet kokio tipo: bitmap, piktograma arba metafailas.

4.5 pav Vaizdas komponente Vaizdas bitų matrica (a) ir piktograma (6)



Šioje programoje metodas LoadFromFile pritaikyta Vaizdas1. paveikslėlį. Jei bus atidaromi tik taškiniai failai, failo įkėlimo sakinį galima pakeisti

paveikslėlį. bitmap. LoadFromFile(.FileName);

Piktogramoms galima naudoti operatorių. paveikslėlį. piktogramą. LoadFromFile(.FileName);

o metafailams – operatorius. paveikslėlį. metafailas. LoadFromFile(.FileName);

arba. paveikslėlį. grafinis. LoadFromFile(.FileName);

Tačiau visais šiais atvejais, jei failo formatas neatitinka numatyto, įvyks klaida. Metodas veikia taip pat. SaveToFile su skirtumu, kuris buvo taikomas paveikslėlį arba į paveikslėlį. Grafika ji išsaugo bet kokio formato vaizdą faile. Pavyzdžiui, jei prie programos pridėsite dialogo langą „SavePictureDialog“.(žr. 8.2 skyrių ), įveskite meniu skyrių Išsaugoti kaip ir įdėkite operatorių į jo tvarkyklę

„SavePictureDialog1“. Vykdyti tada. paveikslėlį. SaveToFile(SavePictureDialog1.FileName);

tada vartotojas galės išsaugoti bet kokio formato vaizdą faile nauju pavadinimu. Tik tokiu atveju, siekiant išvengti tolesnės painiavos, išsaugoto failo plėtinys vis tiek turi atitikti išsaugoto vaizdo formatą.

Programa veiks visiškai identiškai bet kokio formato vaizdams, jei įrašymo operatorių pakeisite

paveikslėlį. grafinis. SaveToFile(.FileName);

turto naudojimas paveikslėlį. Grafika. Ir jei žinote komponente saugomą formatą Vaizdas vaizdus, ​​tada galite taikyti metodą SaveToFileį nuosavybes paveikslėlį. bitmap, paveikslėlį. piktogramą ir paveikslėlį. Metafailas.

Visiems svarstomiems objektams paveikslėlį, paveikslėlį. bitmap, paveikslėlį. piktogramą ir paveikslėlį. Metafailas yra apibrėžti objektų reikšmių priskyrimo metodai:

Priskirti(Šaltinis: TPersistent);

Tačiau už bitmap, piktogramą ir Metafailas galima priskirti tik vienarūšių objektų reikšmes: atitinkamai bitų matricas, piktogramas, metafailus. Išimtis daroma bandant priskirti reikšmes nevienalyčiams objektams Konvertavimo klaida. Objektas paveikslėlį- universalus, jam gali būti priskirtos bet kurios iš kitų trijų klasių objektų vertės. Ir prasmė paveikslėlį gali būti priskirtas tik objektui, kurio tipas atitinka jame saugomo objekto tipą.

Metodas Priskirti taip pat gali būti naudojamas bendrinti vaizdus su mainų srities buferiu. Pavyzdžiui, operatorius

Priskirti(Paveikslėlis1.Paveikslėlis);

į mainų sritį patalpins išsaugotą vaizdą Vaizdas1. Panašiai ir operatorius

grafikos delphi vaizdo programa

Vaizdas1. paveikslėlį. Priskirti (iškarpinė);

perskaitys Vaizdas1 vaizdas iškarpinėje. Be to, tai gali būti bet koks vaizdas ir net tekstas.

Jums tereikia nepamiršti įterpti į operatorių dirbant su iškarpine naudoja jūsų modulis yra nuoroda į modulį clipbrd. Automatiškai „Delphi“ neįtraukia šios nuorodos.

Grįžtant prie komponento savybių Vaizdas, galime pastebėti vieną trūkumą, būdingą mūsų bandomajai programai, parodytai 4.5 pav. Įkeliant skirtingus vaizdus, ​​programos lango dydis gali pasirodyti per mažas ir tada matysite tik dalį vaizdo arba per didelį, ir tada vaizdas bus negražiai patalpintas viršutiniame kairiajame formos kampe, paliekant daug tuščios vietos. Šis trūkumas gali būti pašalintas naudojant savybes Aukštis(aukštis) ir Plotis(pločio) komponentas Vaizdas. Prie nuosavybės automatinis dydisįsteigta m tiesa matmenys Vaizdas automatiškai nustatomas įkelto vaizdo dydis. Ir pagal šiuos matmenis galima atitinkamai pakeisti formos dydį. Pavyzdžiui, aukščiau pateiktas vaizdo įkėlimo iš failo kodas gali būti pakeistas tokiu:

OpenPictureDialog1. Vykdyti tada

pradėti. paveikslėlį. LoadFromFile(.FileName);. ClientHeight:= 1 vaizdas. Aukštis+10;. Viršus:=1 forma. ClientRect. Į viršų

+ (Form1.ClientHeight - Image1.Height) div 2;. ClientWidth := Vaizdas1. Plotis+10;. Kairėn:=1 forma. ClientRect. Kairė

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

pabaiga;

Šis kodas nustato formos kliento srities dydį, kuris yra šiek tiek didesnis nei komponento dydis. Vaizdas1, kurios savo ruožtu prisitaiko prie vaizdo dydžio dėl nuosavybės automatinis dydis. Taikykite šiuos pataisymus savo programai, paleiskite ją ir įsitikinkite, kad forma automatiškai prisitaiko prie įkelto vaizdo dydžio

Formos komponentas

Komponentas figūra grafinės informacijos atvaizdavimo priemonėms galima priskirti tik sąlyginai, nes ji tiesiog vaizduoja įvairias geometrines figūras, tinkamai nuspalvintas. Pagrindinė šio komponento savybė yra figūra(forma), kuri gali turėti šias reikšmes:

Šių formų pavyzdžiai pateikti 4.7 pav

4.7 pav Komponentų pavyzdžiai figūra


Kita esminė komponento savybė yra Šepetys(šepetys). Ši nuosavybė yra tipo objektas TBrush, kuris turi keletą posavybių, visų pirma: spalva ( Šepetys. spalva) ir stilius ( Šepetys. stilius), kad užpildytumėte formą. Užpildykite kai kurias vertes stilius 4.7 pav. matote trečiąją komponento specifinę savybę figūra - Rašiklis(rašiklis), kuris apibrėžia linijos stilių. Šis turtas, kaip ir turtas Šepetys, jau buvo aptartos 4.2 skyriuje . Nuorodinius duomenis apie šias savybes rasite 10* skyriuje.

Diagramos komponentas

Dabar apsvarstykite komponentą diagramą. Šis komponentas leidžia kurti įvairias diagramas ir grafikus, kurie atrodo labai įspūdingai (4.8 pav.). Komponentas diagramą turi daug savybių, metodų, įvykių, taigi, jei atsižvelgsite į juos visus, turėtumėte tam skirti visą skyrių. Todėl mes apsiribojame tik pagrindinių savybių svarstymu diagramą. O likusias dalis rasite integruotame Delphi žinyne arba tiesiog išbandykite eksperimentuodami su diagramomis.

Komponentas diagramą yra objektų konteineris Serija tipo TChartSeries- duomenų serijos, pasižyminčios skirtingais rodymo stiliais. Kiekvienas komponentas gali apimti keletą serijų. Jei norite rodyti grafiką, kiekviena serija atitiks vieną grafiko kreivę. Jei norite rodyti diagramas, kai kurių tipų diagramose galite perdengti kelias skirtingas serijas vieną ant kitos, kitiems (pavyzdžiui, skritulinėms diagramoms) tai tikriausiai atrodys negražiai. Tačiau šiuo atveju galite nustatyti vieną komponentą diagramą kelios tų pačių duomenų serijos su skirtingu diagramos tipu. Tada suaktyvinę vieną iš jų kiekvienu laiko momentu, galite leisti vartotojui pasirinkti diagramos tipą, kuriame bus rodomi jį dominantys duomenys.

Įdėkite vieną ar du (jei norite atkurti 4.8 pav.) komponentus diagramą formoje ir pažiūrėkite į ypatybes, kurios atidaromos objektų inspektoriuje. Paaiškinkime kai kuriuos iš jų.

Nurodo, ar vartotojas gali slinkti stebimą grafiko dalį vykdymo metu spustelėdamas dešinįjį pelės mygtuką. Galimos reikšmės: pmNėra – slinkimas išjungtas, pmHorizontalus, pmVertikalus arba pmAbu – atitinkamai slinkti leidžiama tik horizontalia kryptimi, tik vertikalia kryptimi arba abiem kryptimis.

Leidžia vartotojui keisti vaizdo mastelį vykdymo metu, pelės žymekliu išpjaunant diagramos ar grafiko fragmentus (4.8 pav. b žemiau parodytas grafiko fragmento peržiūros momentas, kuris pilnai pateiktas 4.8 pav. a).

Nurodo diagramos pavadinimą.

Nurodo diagramos antraštę. Pagal numatytuosius nustatymus nėra. Etiketės tekstas apibrėžiamas antrinėje ypatybėje Tekstas.

Apibrėžia kraštinę aplink diagramą.

Diagramos legenda – simbolių sąrašas.

MarginLeft, MarginRight, MarginTop, Margin Bottom

Kairės, dešinės, viršutinės ir apatinės paraštės reikšmės.

BottomAxis, LeftAxis, RightAxis

Šios savybės lemia atitinkamai apatinės, kairės ir dešinės ašių charakteristikas. Šių savybių nustatymas prasmingas grafikams ir kai kurių tipų diagramoms.

Kairė siena, apatinė siena, galinė siena

Šios savybės atitinkamai apibrėžia grafiko trimačio rodymo srities kairiojo, apatinio ir galinio kraštų charakteristikas (žr. 4.8 a pav., apatinis grafikas).

Duomenų serijų, kurios bus rodomos komponente, sąrašas.

Įjungia arba išjungia 3D diagramos rodymą.

Trimačio ekrano charakteristikos.

Trimatė skalė (4.8 pav. tai yra diagramos storis ir grafiko juostelių plotis).


Prie daugelio išvardintų ypatybių Object Inspector yra mygtukai su elipsėmis, leidžiančiais iškviesti vieną ar kitą Chart Editor puslapį – kelių puslapių langą, kuriame galima nustatyti visas diagramų savybes. Diagramų rengyklę taip pat galima iškviesti dukart spustelėjus komponentą diagramą arba spustelėdami jį dešiniuoju pelės mygtuku ir iškylančiajame meniu pasirinkę komandą Redaguoti diagramą.

Jei norite pabandyti atkurti 4.8 pav. parodytą programą, dukart spustelėkite viršutinį komponentą diagramą. Būsite nukreipti į Diagramų rengyklės langą (4.9 pav.) į puslapį Diagrama, kuriame yra keli skirtukai. Visų pirma, jus sudomins jame esantis skirtukas Serija. Spustelėkite mygtuką Pridėti - pridėkite seriją. Būsite nukreipti į langą (4.10 pav.), kuriame galėsite pasirinkti diagramos ar grafiko tipą. Tokiu atveju pasirinkite skritulinę diagramą. Naudodami skirtuką Titles galite nustatyti diagramos pavadinimą, skirtuke Legenda galite nustatyti diagramos legendos (simbolių sąrašo) rodymo parinktis arba iš viso ją pašalinti iš ekrano, skydelio skirtukas nustato skydelio išvaizdą kurioje diagrama rodoma, 3D skirtukas leidžia keisti diagramos išvaizdą: pakreipimą, šlytį, storį ir kt.

Kai dirbate su diagramų rengyklėmis ir pasirinkote diagramos tipą, komponentus diagramą jūsų forma rodo savo išvaizdą su įvestais sąlyginiais duomenimis (žr. 4.11 pav.).

4.10 pav Diagramos tipo pasirinkimas diagramų rengyklėje


Todėl galite iš karto stebėti įvairių parinkčių taikymo rezultatą, o tai labai patogu.

Puslapyje Serija, kuriame taip pat yra daug skirtukų, galite pasirinkti papildomas serijos rodymo charakteristikas. Visų pirma, skirtuke Formatas esančiai skritulinei diagramai naudinga įjungti parinktį Circled Pie, kuri suteiks bet kokio dydžio komponento diagramą diagramos rodymas kaip apskritimas. Skirtuke Marks grupės Stilius mygtukais nustatoma, kas bus rašoma ant etikečių, susijusių su atskirais diagramos segmentais: Reikšmė – vertė, Procentai – procentai, Etiketė – duomenų pavadinimai ir kt. 4.8 pav. pavyzdyje yra įjungtas mygtukas Procentas, o procentų šablonas nustatytas skirtuke Bendra, kuris užtikrina, kad bus rodomos tik sveikosios reikšmės.

Jei norite, galite pridėti prie šio komponento diagramą kitą identišką seriją spustelėdami mygtuką Klonuoti puslapio Diagramos skirtuke Serija, o tada šiai naujai serijai spustelėkite mygtuką Keisti ir pasirinkite kitą diagramos tipą, pavyzdžiui, juostą. Žinoma, du skirtingi diagramų tipai toje pačioje figūroje atrodys prastai. Bet galite išjungti šios naujos serijos indikatorių skirtuke Serija ir leisti vartotojui pasirinkti vieną ar kitą diagramos rodymo tipą (toliau parodysime, kaip tai padaryti).

Išeikite iš diagramų rengyklės, pasirinkite apatinį programos komponentą diagramą ir pakartokite jo nustatymo ypatybes naudodami diagramų rengyklę. Tokiu atveju turėsite nurodyti dvi eilutes, jei norite diagramoje rodyti dvi kreives, ir pasirinkti linijinės diagramos tipą. Kadangi kalbame apie grafikus, galite naudoti skirtukus Axis ir Walls, kad nustatytumėte ašių ir trimačių grafiko paviršių koordinačių charakteristikas.

Tai užbaigia programos išvaizdos dizainą. Belieka parašyti kodą, nurodantį norimus rodyti duomenis. Bandymo programai tiesiog nustatykime tam tikrus pastovius duomenis skritulinėje diagramoje ir sinusines bei kosinusines funkcijas diagramose.

Norėdami nustatyti rodomas reikšmes, naudokite serijos metodus Serija. Sutelkime dėmesį į tris pagrindinius metodus.

Metodas Aišku išvalo seriją iš anksčiau įvestų duomenų.

Metodas Papildyti:

(Const AVvalue: Double; Const AEtiketė: eilutė;: TColor)

leidžia į diagramą įtraukti naują tašką. Parametras AV vertė atitinka pridėtinę vertę, parametrą AEtiketė- pavadinimas, kuris bus rodomas diagramoje ir legendoje, ASpalva- spalva. Parametras AEtiketė- neprivaloma, jis gali būti tuščias: "".

Metodas PridėtiXY:(Const AXValue, AYValue: dviguba;ALetikė: eilutė; ASpalva: TColor)

leidžia į funkcijų grafiką įtraukti naują tašką. Galimybės AXValue ir AYValue suderinti argumentą ir funkciją. Galimybės AEtiketė ir ASpalva toks pat kaip ir metodu Papildyti.

Taigi duomenų įkėlimo procedūra mūsų pavyzdyje gali atrodyti taip:

155;=251;=203;=404;

var:word;

pradėti 1 serija daryti

pradėti;(A1, "Floor 1", clGeltona);(A2, "Floor 2", clBlue);(A3, "Floor 3", clRed);(A4, "Floor 4", clPurple);

pabaiga;. aišku. aiškus;

dėl i:=0 į 100 daryti

pradėti. AddXY(0.02*Pi*i, sin(0.02*Pi*i), "", clRed);. AddXY (0,02*Pi*i, cos (0,02*Pi*i), "", clBlue);

Jei, pavyzdžiui, diagramoje rodomiems duomenims pateikėte dvi serijas 1 serija ir 4 serija skirtingi tipai - Pyragas ir baras, tada galite įvesti procedūrą, kuri vartotojo prašymu pakeičia diagramos tipą. Šią procedūrą galima įvesti renginyje paspaudus tam tikru mygtuku, meniu komandoje arba, pavyzdžiui, tiesiog apdorojant komponento paspaudimą diagramą. Norėdami įkelti duomenis į 4 serija ir kad ši diagrama būtų nematoma pirmą kartą, aukščiau nurodytos procedūros pabaigoje galima įterpti teiginius

Priskirti(Serija1);. aktyvus:=klaidingas;

Pirmasis iš šių operatorių perrašo įdėtus duomenis 1 serija, serijoje 4 serija. O antrasis operatorius seriją padaro nematomą 4 serija. Diagramos tipo keitimas atliekamas pagal procedūrą

aktyvus:= ne 1 serija. Aktyvus;. aktyvus:= ne 4 serija. aktyvus;

4.8 b pav. matote vartotojo perjungimo prie kito tipo diagramos rezultatą.

Grafinei informacijai Delphi bibliotekoje rodyti pateikiami komponentai, kurių sąrašas pateiktas lentelėje. 6.

6 lentelė

Grafinės informacijos atvaizdavimo komponentai

Komponentas Puslapis apibūdinimas
Vaizdas (vaizdas) Papildomas Naudojamas grafikai rodyti
PaintBox (langas piešimui) Sistema Naudojamas formoje sukurti sritį, kurioje galite piešti
DrawGrid (braižybos lentelė) Papildomas Naudojamas netekstiniams duomenims rodyti eilutėse ir stulpeliuose
Diagrama (diagramos ir grafikai) Papildomas Komponentas priklauso TeeChart komponentų šeimai, kuri naudojama diagramoms ir diagramoms kurti
Chartfx (diagramos ir grafikai) ActiveX Diagramų ir grafikų redaktorius
FIBook („Excel“ puslapiai) ActiveX Skaitmeninės informacijos įvedimo ir apdorojimo komponentas
VtChart (diagramos) ActiveX Diagramos langas

Be to, galite rodyti ir įvesti grafinę informaciją bet kurio lango komponento, kuris turi savybę, paviršiuje Drobė- drobė.

Vaizdų lentelės – DrawGrid ir StringGrid komponentai

Komponentas DrawGrid naudojamas norint sukurti lentelę programoje, kurioje gali būti grafikos. Šis komponentas yra panašus į komponentą Styginių tinklelis, kadangi pastaroji kildinama iš traukimo tinklelis. Todėl į DrawGrid yra visos komponento savybės, metodai, įvykiai Styginių tinklelis, kitokius nei susiję su tekstu, t.y. neskaitant savybių Ląstelės, Stulpeliai, eilutės, objektai.Šiuo požiūriu komponentas StringGrid turi daug daugiau potencialo nei traukimo tinklelis, nes ląstelėse gali saugoti ir vaizdus, ​​ir tekstus. Ir jei norite įvesti tekstą į kai kurias ląsteles traukimo tinklelis, tada turėsite naudoti metodus, kaip išvesti tekstą į drobę, o tai nėra labai patogu.

Komponentai DrawGrid ir StringGrid turėti drobę Drobė, kur galima skelbti nuotraukas.

Yra metodas ląstelė tiesi, kuris grąžina drobės plotą, skirtą nurodytam langeliui. Šis metodas apibrėžiamas kaip

funkcija CellRect(ACol, ARow: Longint): TRect;

kur Acol ir Arow- stulpelių ir eilučių indeksai, pradedant nuo 0, kurių sankirtoje yra langelis. Šios funkcijos grąžinama sritis yra drobės sritis, kurioje galima nupiešti norimą vaizdą. Pavyzdžiui, operatorius

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

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

kopijos pagal metodą CopyRectį lentelės langelį (1,1). DrawGridl vaizdas iš komponento bitmap.Šis langelis yra antras iš kairės ir antras iš viršaus lentelėje, nes indeksai prasideda nuo 0. Atkreipkite dėmesį, kad jei langelio matmenys yra mažesni už nukopijuoto vaizdo dydį, bus rodoma tik viršutinė kairioji nuotraukos dalis. pasirodo ląstelėje.

Komponentinis drobės vaizdas DrawGrid ir StringGrid kaip ir bet kurio komponento drobėje, jis gali būti ištrintas, kai programos langas persidengia su kitais langais arba, pavyzdžiui, kai programa sumažinama.

Patogus būdas įvesti vaizdus į ląsteles DrawGrid yra naudoti įvykių tvarkyklę OnDrawCell.Šie įvykiai įvyksta kiekvienam lentelės langeliui jos perbraižymo metu. Prižiūrėtojo antraštė atrodo taip:

procedūra TForml.DrawGridlDrawCell(Siuntėjas: TObject;

ACol, ARow: sveikasis skaičius; Tiesiai: TRect; Būsena: TGridDrawState)

Parametras valstybė nurodo ląstelės būseną. Tai rinkinys, kuriame gali būti šie elementai: gdPasirinkta- paryškinta ląstelė gdFocused- fokusuota ląstelė, gdPataisyta- langelis fiksuotoje lentelės srityje. Parametras valstybė gali būti naudojamas skirtingų būsenų ląstelėms rodyti skirtingai.

Formos komponentas

Formos komponentas grafinės informacijos atvaizdavimo priemonėms galima priskirti tik sąlyginai, nes ji tiesiog vaizduoja įvairias geometrines figūras, tinkamai nuspalvintas. Pagrindinė šio komponento savybė yra figūra(forma), kuri gali turėti šias reikšmes:

StRectangle – stačiakampis;

StSquare – kvadratas;

StRoundRect - stačiakampis su užapvalintais kampais;

StRouhdSquare - kvadratas su užapvalintais kampais;

StEllipse – elipsė;

StCircle – apskritimas.

Kita esminė komponento savybė yra Šepetys(šepetys). Ši nuosavybė yra tipo objektas šepetys, turintis daugybę antrinių savybių, ypač spalvą (Šepetys. Spalva) ir stilius (šepetėlio stilius) formos užpildymas. Kai kurių stiliaus verčių užpildymą galite pamatyti pav. 3.2. Trečia iš specifinių komponento savybių figūra- Rašiklis(rašiklis), kuris apibrėžia linijos stilių.

Diagramos komponentas

Dabar apsvarstykite komponentą Diagrama.Šis komponentas leidžia kurti įvairias diagramas ir grafikus, kurie atrodo labai įspūdingai. Komponentas diagramą turi daug savybių, metodų, įvykių, taigi, jei atsižvelgsite į juos visus, turėtumėte tam skirti visą skyrių. Todėl mes apsiribojame tik pagrindinių savybių svarstymu Diagrama. O likusias dalis rasite integruotame Delphi žinyne arba tiesiog išbandykite eksperimentuodami su diagramomis.

Komponentas diagramą yra objektų konteineris Serija- klasės palikuonys TchartSeries. Kiekvienas toks objektas reprezentuoja duomenų seką, kuriai būdingas tam tikras rodymo stilius: vienas ar kitas grafikas ar diagrama. Kiekvienas komponentas diagramą gali apimti kelias serijas. Jei norite rodyti grafiką, kiekviena serija atitiks vieną grafiko kreivę. Jei norite rodyti diagramas, kai kurių tipų diagramose galite perdengti kelias skirtingas serijas vieną ant kitos, kitiems (pavyzdžiui, skritulinėms diagramoms) tai tikriausiai atrodys negražiai. Tačiau šiuo atveju galite nustatyti vieną komponentą diagramą kelios tų pačių duomenų serijos su skirtingu diagramos tipu. Tada suaktyvinę vieną iš jų kiekvienu laiko momentu, galite leisti vartotojui pasirinkti diagramos tipą, kuriame bus rodomi jį dominantys duomenys.

Įdėkite vieną ar du komponentus diagramą formoje ir pažiūrėkite į ypatybes, kurios atidaromos objektų inspektoriuje. Paaiškinkime kai kuriuos iš jų.

AllowPanning – nustato vartotojo galimybę slinkti stebimą diagramos dalį vykdymo metu paspaudus dešinį pelės mygtuką. Galimos reikšmės: pmNėra – slinkimas išjungtas, pmHori/ontal, pm Vertikalus arba pmAbu – atitinkamai slinkti leidžiama tik horizontalia kryptimi, tik vertikalia kryptimi arba abiem kryptimis.

AhowZoom – leidžia vartotojui keisti vaizdo mastelį vykdymo metu, pelės žymekliu išpjaunant diagramos ar grafiko fragmentus. Jei fragmento rėmelis nupieštas į dešinę ir žemyn, tada šis fragmentas ištempiamas iki viso diagramos lauko. O jei rėmas nubraižytas į kairę, tada atkuriamas pradinis mastelis.

Pavadinimas – apibrėžia diagramos pavadinimą.

Pėda – apibrėžia antraštę po diagrama. Pagal numatytuosius nustatymus nėra. Etiketės tekstas apibrėžiamas antrinėje ypatybėje Tekstas.

Rėmas – apibrėžia rėmelį aplink diagramą.

Prie daugelio išvardintų ypatybių Object Inspector yra mygtukai su elipsėmis, leidžiančiais iškviesti vieną ar kitą Chart Editor puslapį – kelių puslapių langą, kuriame galima nustatyti visas diagramų savybes. Diagramų rengyklę taip pat galima iškviesti dukart spustelėjus komponentą diagramą arba spustelėdami jį dešiniuoju pelės mygtuku ir iškylančiajame meniu pasirinkę komandą Redaguoti diagramą.

Dukart spustelėkite viršutinį komponentą Diagrama. Būsite nukreipti į diagramos rengyklės langą, kuriame rasite diagramos puslapį, kuriame yra keli skirtukai. Visų pirma, jus sudomins jame esantis skirtukas Serija. Spustelėkite mygtuką Pridėti - pridėkite seriją. Būsite nukreipti į langą, kuriame galėsite pasirinkti diagramos ar grafiko tipą. Tokiu atveju pasirinkite skritulinę diagramą. Naudodami skirtuką Titles galite nustatyti diagramos pavadinimą, skirtuke Legenda galite nustatyti diagramos legendos (simbolių sąrašo) rodymo parinktis arba iš viso ją pašalinti iš ekrano, skydelio skirtukas nustato skydelio išvaizdą kurioje diagrama rodoma, 3D skirtukas leidžia keisti diagramos išvaizdą: pakreipimą, šlytį, storį ir kt.

Kai dirbate su diagramų rengyklėmis ir pasirinkote diagramos tipą, komponentus diagramą jūsų forma rodo savo išvaizdą su įvestais sąlyginiais duomenimis. Todėl galite iš karto stebėti įvairių parinkčių taikymo rezultatą, o tai labai patogu.

Puslapyje Serija, kuriame taip pat yra daug skirtukų, galite pasirinkti papildomas serijos rodymo charakteristikas. Visų pirma, skirtuke Formatas esančiai skritulinei diagramai naudinga įjungti parinktį Circled Pie, kuri užtikrins, kad diagrama būtų rodoma kaip apskritimas bet kokio dydžio diagramos komponente. Skirtuke Marks grupės Stilius mygtukais nustatoma, kas bus rašoma ant etikečių, susijusių su atskirais diagramos segmentais: Reikšmė – vertė, Procentai – procentai, Etiketė – duomenų pavadinimai ir kt.

Jei norite, prie šio diagramos komponento galite pridėti kitą identišką seriją, paspausdami mygtuką Klonuoti, esantį diagramos puslapio skirtuke Serija, o tada šiai naujai serijai spustelėkite mygtuką Keisti ir pasirinkite kitą diagramos tipą, pvz., juostą. .

Išeikite iš diagramų rengyklės, savo programoje pasirinkite apatinį diagramos komponentą ir pakartokite jo nustatymo ypatybes naudodami diagramų rengyklę. Tokiu atveju turėsite nurodyti dvi eilutes, jei norite diagramoje rodyti dvi kreives, ir pasirinkti linijinės diagramos tipą. Kadangi kalbame apie grafikus, galite naudoti skirtukus Axis ir Walls, kad nustatytumėte ašių ir trimačių grafiko paviršių koordinačių charakteristikas.

Tai užbaigia programos išvaizdos dizainą. Belieka parašyti kodą, nurodantį norimus rodyti duomenis. Bandymo programai tiesiog apibrėžkime kai kuriuos pastovius duomenis skritulinėje diagramoje ir kai kurias funkcijas diagramose.

Norėdami nustatyti rodomas reikšmes, naudokite serijos metodus. Sutelkime dėmesį į tris pagrindinius metodus.

Metodas Aišku išvalo seriją iš anksčiau įvestų duomenų.

Metodas Papildyti:

Pridėti(Const AVvalue:Double; Const AEtiketė:Eilutė; ASpalva:Tspalva) ,

leidžia į diagramą įtraukti naują tašką. Parametras AV vertė atitinka pridėtinę vertę, parametrą AEtiketė- etiketė, kuri bus rodoma diagramoje ir legendoje, ASpalva- spalva. Parametras AEtiketė- neprivaloma, jis gali būti tuščias: „“. Metodas AddXY:

AddXY(Const AXValue, AYValue: Double; Const AEtiketė: eilutė; ASpalva: TColor)

leidžia į funkcijų grafiką įtraukti naują tašką. Galimybės AXValue ir AYValue suderinti argumentą ir funkciją. Galimybės AEtiketė ir Aspalva toks pat kaip ir metodu Papildyti.

Taigi duomenų įkėlimo procedūra mūsų pavyzdyje gali atrodyti taip:

constAl=155; A2=251; A3=203; A4=404; var i:word; pradėti

Pradėkite nuo serijos

Add(Al,"Parduotuvė l",clGeltona);

Add(A2,"Dizainas 2",clBlue);

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

Add(A4,"Dizainas 4",clPurpurinė); pabaiga;

Serija2.Aišku; SeriesS.Clear; i:=0 iki 100 pradėkite

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

SeriesS.AddXY(0.02*Pi*i,cos(0.02*Pi*i) galas;

ClRed); ,clBlue);

Operatoriai Aišku būtini, jei ketinate atnaujinti duomenis programos veikimo metu.

Tai užbaigia mūsų įvadą į komponentą. Diagrama. Tiesa, įvertinome tik nedidelę jo galimybių dalį.

mob_info