Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Këshilla
  • Komponentët për shfaqjen e informacionit grafik. Prezantim mbi programimin në mjedisin Delphi me temë: "Shfaqja e informacionit grafik në Delphi"

Komponentët për shfaqjen e informacionit grafik. Prezantim mbi programimin në mjedisin Delphi me temë: "Shfaqja e informacionit grafik në Delphi"

PUNË LABORATORIKE

TEMA: « Grafika nëDelfi- ndërtimi nga më të thjeshtat
forma gjeometrike "

Përmbledhje e teorisë

Delphi i ofron zhvilluesit tre mënyra për të shfaqur grafikë:

    vizatimi gjatë ekzekutimit të programit

    përdorimi i imazheve grafike të krijuara paraprakisht

    krijimi i imazheve duke përdorur komponentë grafikë

Për të ndërtuar grafikët, janë krijuar klasa të veçanta që ofrojnë mjete dhe metoda për vizatim: mjetet përshkruhen në tre klasa - Tfont, Tpen, Tbrush; zona e vizatimit dhe metodat ofrohen nga klasa Tcanvas.

KlasaTfont- vendos karakteristikat e fontit të përdorur për të shfaqur tekstin në kanavacë. Karakteristikat e klasës përshkruhen në seksionin "Vetitë themelore të disponueshme për shumicën e komponentëve".

KlasaTpen- vendos karakteristikat e stilolapsit (lapsit) me të cilin vizatohen vija.

Vetitë klasës Tpen:

Ngjyrë: Tcolor - ngjyra e linjës (parazgjedhja është e zezë)

Gjerësia: numër i plotë - trashësia e vijës në piksel;

Stili = (psSolid, psDash, psDot, psdashDot, psClear) - përcakton stilin e linjës (e ngurtë, dash, dash, dash-dot, e padukshme)

KlasaTbrush- vendos karakteristikat e furçës, e cila përdoret për të pikturuar mbi sipërfaqen e figurës.

Vetitë klasës Tbrush:

Ngjyrë: Tcolor - ngjyra e furçës (parazgjedhja është e bardhë)

Stili- stoli furçesh, mund të marrë vlerat:

BsSolid - ngjyrosje e fortë

BsClear - mungesa e hijes

Bs Vija vertikale - vertikale

BsBdiagonal - vija diagonale djathtas

BsDiagCross - qelizë e pjerrët

BsHorizontal - vija horizontale

BsFdiagonal - linja diagonale majtas

BsCross - qelizë

KlasaTcanvas- përcakton sipërfaqen në të cilën vendoset imazhi i krijuar, dhe mjetet me të cilat krijohet imazhi: font, laps, furçë.

Si parazgjedhje, e gjithë zona e klientit të formularit (pa titullin, menunë kryesore dhe linjat e lëvizjes së formularit) përdoret si zona e punës (kanavacë, "kanavacë"), por ju mund të lini mënjanë zona më të vogla pune brenda formularit duke përdorur komponentët Kutia e bojës ose Imazhi... Origjina e koordinatës së kanavacës është këndi i sipërm i majtë i zonës së punës, gjerësia e zonës së punës përcaktohet nga vetia Gjerësia e klientit, lartësia - nga prona Lartësia e klientit.

Vetitë klasës Tcanvas:

Kanavacë: Tcanvas - përcakton zonën e vizatimit

Furçë: Furçë - furçë për mbushjen e formave të mbyllura

Fonti: Tfont - font për paraqitjen e tekstit në kanavacë

Stilolaps: Tpen - laps (stilolaps) për vizatim

PenPos: Tpoint - pozicioni aktual i kursorit të padukshëm në kanavacë

Komentoni : lloji Tpoint - e përcaktuar si më poshtë:

Lloji Tpoint = rekord

Piksele: Tcolor - vendos ngjyrat e pikselave të kanavacës, X, Y - koordinatat e pikselit. Vetia Pixels është e dobishme për vizatimin e grafikëve duke përdorur pika të një ngjyre të zgjedhur.

Metodat bazë të klasës TCanvas

    procedurë Leviz ne(x, y: numër i plotë); - lëviz stilolapsin pa vizatuar drejtëz në një pikë me koordinata (x, y).

    Procedura LineTo(x, y: numër i plotë); - vizaton një vijë nga pika aktuale në pikën me koordinata (x, y).

Shembull : Vizatoni një vijë diagonale blu në formë nga këndi i sipërm i majtë i formës në këndin e poshtëm djathtas.

Stilolaps.ngjyra: = cblue;

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

    procedurë Drejtkëndësh(x1, y1, x2, y2: numër i plotë); - vizaton një drejtkëndësh: x1, y1 - koordinatat e këndit të sipërm majtas; х2, у2- koordinatat e këndit të poshtëm të djathtë.

Shembull : Vizatoni një katror të mbushur me ngjyrë të verdhë 60 px në mes të formës.

var Xc, Yc: numër i plotë; //

Xc: = Gjerësia e klientit div 2;

Xy: = ClientHeight div 2;

Canvas.Brush.color: = clyellow;

Kanavacë.drejtkëndësh (xc-30, Yc-30, xc + 30, Yc + 30);

    procedurë Elipsa(x1, y1, x2, y2: numër i plotë); - vizaton një elips të brendashkruar në një drejtkëndësh me koordinatat e përcaktuara.

Shembull : vizatoni një elips të gdhendur në komponentin PaintBox.

PaintBox1.Canvas.Pen.Gjerësia: = 4; // gjerësia e rreshtit = 4 piksele

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

    procedurë Shumëkëndëshi(); - vizaton një shumëkëndësh të mbyllur të dhënë nga një grup koordinatash.

Shembull : vizatoni një romb të mbushur që lidh mesin e anëve të formës

Var Xc, Yc: numër i plotë; // koordinatat e qendrës së zonës së klientit të formularit

Xc: = Gjerësia e klientit div 2;

Xy: = ClientHeight div 2;

Canvas.Brush.Color: = Rgb (275,140,70); // portokalli ngjyrë hijezim

Kanavacë.Poligoni ();

fundi;

    Procedura Arc(x1, y1, x2, y2, x3, y3, x4, y4: numër i plotë); - shfaq harkun e një elipsi të kufizuar nga një drejtkëndësh (x1, y1, x2, y2). Harku shfaqet nga një pikë me koordinata (x3, y3) në një pikë me koordinata (x4, y4) kundër në drejtim të akrepave të orës.

Shembull : vizatoni një hark elips që lidh mesin e anës së sipërme të komponentit
PaintBox me mesin e anës së djathtë.

Procedura Tform1.Button1Click (Dërguesi: Tobject);

Var X3, y3, x4, y4: Numër i plotë;

Me PaintBox1 bëni

Canvas.Pen.Ngjyra: = clE bardhë;

Canvas.Pen.Gjerësia: = 3;

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

X3: = Gjerësia e klientit div 2;

X4: = Gjerësia e klientit;

Y4: = ClientHeight div 2;

Canvas.Pen.Color: = clMaroon;

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

Fundi;

    procedurë Akord(x1, y1, x2, y2, x3, y3, x4, y4: numër i plotë); - vizaton një kordë - një vijë e drejtë që lidh 2 pika të elipsës: një pikë me koordinata (x3, y3) me një pikë (x4, y4).

Shembull : zëvendësoni në shembullin e dhënë metodën ARC, metodën Chord dhe merrni këtë rezultat.

    procedurë Byrek(x1, y1, x2, y2, x3, y3, x4, y4: numër i plotë); - vizaton një segment elips që lidh qendrën e elipsës me koordinatat (x3, y3) dhe (x4, y4).

Shembull : Prezantoni metodën PIE në shembullin e dhënë për metodën ARC dhe merrni këtë rezultat.

    procedurë TextOut(x, y: numër i plotë; Teksti: varg); - nxjerr vargun e kaluar në parametrin Text në një drejtkëndësh, këndi i sipërm majtas i të cilit përcaktohet nga koordinatat x, y. Karakteristikat e fontit vendosen me veglën Font.

Shembull : shkruani emrin e grafikut të vizatuar në fund të formularit.

Canvas.Font.Lartësia: = 20 ; // lartësia e karaktereve 20 piksele

Canvas.Font.Color: = cblue;

Canvas.TextOut (10, ClientHeight-24, 'grafiku i funksionit SIN (X)');

Komponentët grafikë

Delphi ofron një sërë komponentësh të jashtëm për të përmirësuar përvojën e përdoruesit. Këta komponentë janë postuar në faqe Shtesë dhe Sistemi paleta e komponentëve.

KomponentiImazhi(KlasaTimage) - projektuar për të shfaqur imazhe grafike të ruajtura në skedarë të jashtëm me shtesa:

    Iko (ikonë, piktogram);

    Bmp (bitmap, bitmap);

    Wmf, .emf (metafil);

    Jpg, .jpeg (imazh i ngjeshur JPEG).

Kryesor Vetitë :

Përmasat automatike: boolean - nëse është e vërtetë, komponenti rregullon madhësinë e tij në madhësinë e imazhit të ngarkuar; sipas parazgjedhjes false.

Shtrihu: boolean - nëse është e vërtetë, vlera e ngarkuar zë të gjithë zonën e komponentit; default është false.

Kanavacë: Tcanvas - përdoret për vizatim brenda komponentit në fazën e ekzekutimit të programit.

Foto: Tpicture-përcakton figurën e vendosur në komponent.

Kryesor metodat klasës Figura:

Procedura LoadFromFile(Emri i skedarit: varg); - ngarkon në komponent një imazh nga një skedar me emrin Emri i skedarit.

Procedura SaveToFile(Emri i skedarit: varg); - ruan imazhin nga komponenti në një skedar me emrin Emri i skedarit.

KomponentiKutia e bojës - përcakton një zonë drejtkëndëshe për të vizatuar. Prona kryesore është Kanavacë, të gjitha metodat e klasës Tcanvas janë të disponueshme, ajo nuk ka veti të pavarura.

Shembull : vizatoni një elips të verdhë të gdhendur në komponentin PaintBox1.

Procedura Tform1Button1Click (dërguesi: Tobject);

Me PaintBox1.Canvas do

Furça.Ngjyra: = clyellow;

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

fund;

KomponentiBitBtn butoni raster

Butoni BitBtn, ndryshe nga ai standard, përveç emrit të tij (Caption), mund të përmbajë një imazh të caktuar nga vetia Glyph... Ekziston një grup butonash standardë BitBtn, me veti të paracaktuara (me një foto, etiketë dhe qëllim specifik) - lloji i një butoni standard zgjidhet përmes pronës E sjellshme... Lloji = (bkCustom, bkAbort, bkAnulo, bkMbyll ...)

Detyra numër 1

Krijoni një aplikacion që përmban në formularin kryesor dy komponentë të imazhit dhe 4 butona ("Ngarkimi i imazhit", "Ndërtimi i formës gjeometrike", "Ndrysho ngjyrën", "Dalja") dhe ju lejon të:

a) ngarkoni një grafik të zgjedhur nga përdoruesi në komponentin Image1 në mënyrë që imazhi të zërë të gjithë zonën e komponentit Image.

b) nën komponentin Image1 shfaqet mbishkrimi "Kjo është një fotografi nga një skedar.

(për çdo matje të dimensioneve dhe pozicionit të komponentitImazhi1 mbishkrim duhet
direkt nën komponent).

c) vizatoni një figurë gjeometrike brenda komponentit Image2: një segment i mbushur me elips që lidh mesin e komponentit Image me mesin e anës së poshtme dhe të djathtë të komponentit Image.

(për çdo ndryshim në madhësinë dhe pozicionin e komponentitImazhi2 figura duhet të ndërtohet saktë, d.m.th. sipas detyrës në lidhje me komponentinImazhi2)

d) ndryshoni ngjyrën e vijës së vizatuar në Image2 me kërkesë të përdoruesit duke përdorur komponentin ColorDialog.

Detyra numër 2

Krijoni një aplikacion që ju lejon të rregulloni në mënyrë të rastësishme disa etiketa në komponentin Image (për shembull, fjala "Hurray!"). Për zbatim, përdorni gjeneratorin e numrave të rastësishëm Randomize dhe funksionin Random.

Dimensionet e komponentit Image, fjala e shfaqur në Imazhe dhe numri i fjalëve - duhet të futen nga përdoruesi.

Detyra numër 3

Krijoni një aplikacion që ju lejon të zgjidhni emrin e një forme gjeometrike nga ListBox dhe të vizatoni formën e zgjedhur në komponentin Image. Ngjyra e formës zgjidhet nga komponenti RadioGroup.

Detyra numër 4

Ndani komponentin PaintBox1 në 4 pjesë të barabarta, lyeni secilën pjesë në një ngjyrë të ndryshme, për shembull: blu, të verdhë, jeshile, të kuqe.

Pranë çdo cepi të PaintBox1, shkruani koordinatat e këtij këndi (në lidhje me origjinën e formës në të cilën ndodhet komponenti PaintBox1).

Detyra numër 5

ME

zgjidhni llojin e formës së vizatuar nga komponenti Radiogroup1, ngjyrën e mbushjes nga komponenti Radiogroup2 dhe vizatoni formën e zgjedhur në komponentin Image.

Detyra numër 6

Krijo një aplikacion që lejon përdoruesin të përmasojë komponentin PaintBox1 (në pixel).

Ndani komponentin PaintBox1 në 2 pjesë të barabarta, brenda secilës pjesë vizatoni një elips të pikturuar në ngjyrën e zgjedhur nga përdoruesi në ColorDialog.

Detyra numër 7

ME Krijoni një aplikacion që ju lejon të:

zgjidhni emrin e një forme gjeometrike nga ListBox dhe vizatoni formën e zgjedhur në komponentin Image. Forma duhet të plotësohet me ngjyrën e zgjedhur nga përdoruesi në komponentin ColorDialog nëse komponenti RadioGroup është vendosur në Po.

Detyra numër 8

Krijo një aplikacion që lejon përdoruesin të përmasojë komponentin PaintBox1 (në pixel).

Ndani komponentin PaintBox1 në 4 pjesë të barabarta, brenda secilës pjesë vizatoni një formë të ndryshme gjeometrike (elips, romb, trekëndësh dhe drejtkëndësh). Ngjyra e secilës formë zgjidhet nga përdoruesi në ColorGrid.

Detyra numër 9

zgjidhni një emër gjeometrik nga ListBox
forma (elips, romb, drejtkëndësh) dhe vizatoni
formën e zgjedhur në komponentin Image. Vendndodhja
shifrat në komponentin Imazh (tremujori I, tremujori II,

tremujori III ose IV) dhe zgjidhet ngjyra e mbushjes së figurës
nga komponentët e RadioGroup.

Detyra numër 10

Krijo një aplikacion që lejon përdoruesin të përmasojë komponentin PaintBox1 (në pixel).

Sigurohuni që madhësia anësore të mos jetë tekst, të mos jetë numër negativ dhe të mos kalojë madhësinë më të vogël të formularit.

Ndani komponentin PaintBox1 në 4 pjesë të barabarta, brenda secilës pjesë vizatoni një formë gjeometrike të zgjedhur nga përdoruesi në Combobox (elips, romb, trekëndësh dhe drejtkëndësh). Ngjyra e formës, e zgjedhur nga përdoruesi në ColorBox.

Detyra numër 11

Krijoni një aplikacion që ju lejon të:

Zgjidhni pozicionin e vizatimit nga komponenti Radiogroup

në komponentin Imazh i një trekëndëshi kënddrejtë, vendoseni
ngjyra e mbushjes së formës ose ngjyra e konturit në varësi të
aktivizoni butonat e kutisë së kontrollit. Zgjidhni ngjyrën përmes
komponenti ColorGrid.

Detyra numër 12

Krijo një aplikacion që lejon përdoruesin të përmasojë komponentin PaintBox1 (në pixel).

Sigurohuni që madhësia anësore të mos jetë tekst, të mos jetë numër negativ dhe të mos kalojë madhësinë më të vogël të formularit.

Ndani komponentin PaintBox1 në 2 pjesë të barabarta, brenda njërës prej pjesëve vizatoni një formë gjeometrike të zgjedhur nga përdoruesi në Combobox (elips, romb, trekëndësh dhe drejtkëndësh). Ngjyra e formës, e zgjedhur nga përdoruesi në ColorBox.

Për shembull, mund të ndryshoni ngjyrën e një forme si më poshtë:

forma1.Ngjyra: = ColorBox1.Ngjyrat;

Detyra numër 13

Krijoni një aplikacion që ju lejon të:

a) vizatoni një katror në mes të formës (madhësia e anës së katrorit futet nga përdoruesi). Sigurohuni që madhësia anësore të mos jetë tekst, të mos jetë numër negativ dhe të mos kalojë madhësinë më të vogël të formularit.

b) ndajeni katrorin me një diagonale ose dy, në varësi të përfshirjes së butonave të kutisë së kontrollit dhe lyeni çdo trekëndësh që rezulton me një ngjyrë të ndryshme. Zgjedhja e ngjyrës bëhet nga përdoruesi.

Detyra numër 14

Krijo një aplikacion që lejon përdoruesin të përmasojë komponentin PaintBox1 (në pixel).

Sigurohuni që madhësia anësore të mos jetë tekst, të mos jetë numër negativ dhe të mos kalojë madhësinë më të vogël të formularit.

Ndani komponentin PaintBox1 në 2 pjesë të barabarta, vizatoni një diamant brenda njërës pjesë dhe vizatoni çdo trekëndësh brenda pjesës tjetër. Ngjyra e formës, e zgjedhur nga përdoruesi në ColorBox.

Për shembull, mund të ndryshoni ngjyrën e një forme si më poshtë:

forma1.Ngjyra: = ColorBox1.Ngjyrat;

Detyra numër 15

Krijoni një aplikacion që ju lejon të:

a) vendosni dimensionet horizontale dhe vertikale të komponentit Image të jenë të njëjta dhe të barabarta me numrin e futur nga përdoruesi nga tastiera;

(me kusht që madhësia e anës të mos jetë tekst, të mos jetë numër negativ dhe të mos kalojë madhësinë më të vogël të formularit)

b) ndaje komponentin Imazh në 4 katrorë të barabartë me dy vija blu;

c) brenda çdo katrori që rezulton, vizatoni një rreth të gdhendur në të (lëreni përdoruesin të zgjedhë ngjyrën e rrathëve përmes kutisë së dialogut të përzgjedhjes së ngjyrave).

Detyra numër 16

Krijo një aplikacion që lejon përdoruesin të përmasojë komponentin PaintBox1 (në pixel).

Sigurohuni që madhësia anësore të mos jetë tekst, të mos jetë numër negativ dhe të mos kalojë madhësinë më të vogël të formularit.

Ndani komponentin PaintBox1 në 9 pjesë të barabarta dhe lyeni çdo drejtkëndësh që rezulton në formën e një tabele. Ngjyra e mbushjes zgjidhet nga përdoruesi në ColorBox.

Për shembull, mund të ndryshoni ngjyrën e një forme si më poshtë:

forma1.Ngjyra: = ColorBox1.Ngjyrat;

Detyra numër 17

Vendosni dy komponentë të imazhit dhe katër butona në formular: Line Color, Plotësoni Color, Ok dhe Exit; dhe komponentin Edit.

Kur klikoni OK, një katror me anën X vizatohet në Image1 dhe një trekëndësh kënddrejtë me këmbë të barabarta, secila prej të cilave ka gjatësinë X, vizatohet në Image2.

Kulmi i trekëndëshit përkon me origjinën e Image2. Një nga kulmet e katrorit përkon me origjinën e Image1.

Butoni OK bëhet i disponueshëm vetëm kur ngjyra e vijës dhe ngjyra e mbushjes zgjidhen për vizatimin e formës.

X - zgjedh në mënyrë të rastësishme, duke përdorur funksionin Random dhe vlera e vlerës X duhet të shfaqet në komponentin Edit.

Detyra numër 18

Krijo një aplikacion që lejon përdoruesin të përmasojë komponentin PaintBox1 (në pixel).

Ndani komponentin PaintBox1 në 4 pjesë të barabarta, brenda pjesës së përzgjedhur nga përdoruesi duhet të ndërtohet një rreth i mbushur, madhësia e të cilit vendoset nga përdoruesi. Përdoruesi zgjedh ngjyrën e mbushjes në ColorBox.

Për shembull, mund të ndryshoni ngjyrën e një forme si më poshtë:

forma1.Ngjyra: = ColorBox1.Ngjyrat;

Biblioteka e komponentëve vizualë (VCL) Delphi na ofron komponentët vizualë të mëposhtëm për shfaqjen e informacionit grafik: Imazhi (imazhi), PaintBox (dritare për vizatim), DrawGrid (tabela e figurave), Grafiku (grafikë dhe grafikë), Animate ( videoklip output), si dhe Forma. Këta komponentë kanë një veti Canvas (diskutuar më lart) që i jep akses çdo piksel. Sigurisht, nuk është e nevojshme të vizatoni piksel pas piksel për të punuar me grafikë në Delphi, sistemi Delphi ofron mjete të fuqishme për të punuar me grafikë.

Le të shqyrtojmë më në detaje komponentët e mësipërm:

Komponenti i imazhit (imazhi)

Është një objekt i klasës TImage. Përdoret për të shfaqur imazhet e lexuara nga skedarët grafikë në ekran. Si parazgjedhje, ai nxjerr në sipërfaqen e imazheve të formularit të paraqitur në formatin * .bmp. Për të shfaqur imazhe në formatin jpg, është e nevojshme të lidhni njësinë JPEG në direktivën e përdorimit. Ndodhet në skedën shtesë të paletës së komponentëve.

Pas vendosjes së komponentit Image në formular, ai merr formën e një zone drejtkëndore të zgjedhur.

Figura 9 - Komponenti Imazh në formular

Për të hapur një dialog për zgjedhjen e imazhit të dëshiruar, bëni sa më poshtë duke përdorur Inspektorin e Objekteve. Për ta bërë këtë, gjeni veçorinë Picture dhe klikoni në tre pika në të majtë të saj. Hapet dritarja Picture Editor dhe në të zgjedhim Load, në dritaren e hapur zgjedhim skedarin e imazhit.

Mund të bëhet gjithashtu në mënyrë programore duke thirrur metodën LoadFromFile të veçorisë Picture:

Image1.Picture.LoadFromFile ("emri_pic.jpeg");

ku name_pic.jpeg është emri i skedarit.

Tabela 8 - Karakteristikat themelore të komponentit Image

Pronës

Përshkrim

Imazhi shfaqet në fushën e komponentit

Dimensionet e komponentit. Nëse këto dimensione janë më të vogla se madhësia e veprës së artit dhe vetitë Strech, AutoSize dhe Proportional janë False, atëherë shfaqet një pjesë e imazhit.

Ju lejon të shkallëzoni automatikisht fotot pa shtrembërim. Për të kryer shkallëzimin, vlera e vetive AutoSize duhet të jetë e barabartë me False

Ju lejon të shkallëzoni automatikisht (tkurni ose zgjeroni) një imazh për t'iu përshtatur madhësisë së komponentit Imazhi. Nëse madhësia e komponentit nuk është proporcionale me madhësinë e figurës, atëherë imazhi do të shtrembërohet

Ju lejon të ndryshoni madhësinë automatike të komponentit për t'iu përshtatur imazhit

Ju lejon të përcaktoni pozicionin horizontal të figurës në fushën e komponentit Image nëse gjerësia e figurës është më e vogël se gjerësia e komponentit.

Sipërfaqja për të shfaqur grafikë

Përcakton ngjyrën transparente të sfondit të imazhit

Shembulli 1: Shkruani një program për të parë imazhet duke përdorur komponentin Image. Programi duhet të ketë aftësitë e mëposhtme:

  • · Shikoni imazhet në dosje;
  • · Shikoni imazhin në madhësi të plotë ose në formatin më të përshtatshëm për madhësinë e dritares;
  • · Menaxhoni skedarët e imazheve, si dhe printoni, ruani, fshini dhe modifikoni imazhet;
  • · Nëse është e nevojshme, hapni imazhin në programin e redaktimit;

Figura 10 - Dritarja e programit përpara se të fillojë

Krijimi i projektit:

  • 1. Krijoni një dosje për skedarët e programit dhe hapni mjedisin e integruar të zhvillimit Delphi.
  • 2. Shtoni përbërës në formular:

Së pari, ne do të vendosim komponentin Image në formular, komponentin kryesor me të cilin do të duhet të punojmë. Përveç tij, ne kemi nevojë për komponentët e mëposhtëm:

  • · ScrollBox Është e nevojshme kur në modalitetin e madhësisë së plotë imazhi do të shkojë përtej imazhit. Ne e vendosëm veçorinë e tij Aling në vlerën alClient në mënyrë që madhësia e saj të ndryshojë proporcionalisht me madhësinë e dritares. Dhe vendosni komponentin Image mbi të;
  • · Ne gjithashtu do të shtojmë komponentët-dialogët SavePictureDialog dhe OpenPictureDialog, të destinuara për ruajtjen dhe hapjen e imazheve. Ne kemi nevojë që i pari të kopjojë imazhin në drejtorinë e zgjedhur, i dyti për të thirrur dialogun për hapjen e një skedari grafik. Ato janë të vendosura në faqen e Dialogjeve të Paletës së Komponentëve. Gjithashtu nga kjo faqe na duhet komponenti PrintDialog, të cilin duhet ta quajmë dialog për zgjedhjen e printerit për printim.
  • Shto MainMenu për të shtuar menynë kryesore në program dhe XPManifest për një dizajn më shumëngjyrësh
  • · Ne gjithashtu duhet të ruajmë emrat e imazheve në drejtorinë e punës diku. Për këto qëllime, komponenti ListBox është i përshtatshëm, i cili mund të fshihet gjatë përpunimit të ngjarjes Krijo të Form1.
  • · Për të vendosur butonat e navigimit dhe për të punuar me lehtësi me ta, shtoni një panel Veil, në të cilin do të vendosim këta butona (Imazhi i mëparshëm, Imazhi tjetër, Madhësia e vërtetë, Ndryshimi, Fshi, Kopjo në, Printo, Edit). SpeedButton është zgjedhur si një komponent për ta.
  • · Shtoni një kohëmatës për të kapur tastet "Majtas" (imazhi i mëparshëm), "Djathtas" (imazhi tjetër) dhe "Del" (fshini imazhin).
  • · Dhe një komponent tjetër - ProgressBar, i cili shfaq procesin e ngarkimit të skedarëve të mëdhenj * .Jpg.
  • 3. Shkruani kodin për trajtimin e ngjarjes së shtypjes së butonave (Imazhi i mëparshëm, Imazhi tjetër, Madhësia e vërtetë, Ndryshimi i madhësisë, Fshi, Kopjo në, Printo, Ndrysho). Shkruani kodin për trajtimin e ngjarjes së klikimit në artikujt e menusë kryesore (Dalje, Hape, Mbyll, Krijo).
  • 4. Specifikoni cilësimet fillestare për krijimin e formularit. Klikoni dy herë në hapësirën e lirë të formularit dhe shkruani procedurën e kodit të procedurës TForm1.FormCreate (Dërguesi: TObject), shihni kodin e modulit në Shtojcën 1.
  • 5. Shkruani procedurat e llojit të mëposhtëm:

procedura FindFileInFolder (rruga, ext: varg);

Kjo rutinë skanon dosjen e shtegut për skedarë duke përdorur maskën ext.

Lista e plotë e kodit të modulit të programit gjendet në Shtojcën 1 (Lista e Programit 3).

  • 1. Listoni aftësitë e komponentit Image.
  • 2. Cila klasë është komponenti Image?
  • 3. 3. Çfarë lloj skedarësh mbështet si parazgjedhje komponenti Image?
  • 4. 4. Listoni vetitë kryesore të komponentit Image.
  • 5. 5. Çfarë vetie ruan imazhin e komponentit Image?

Tema :
Qëllimi i punës laboratorike Delfi.

Nxënësit duhet të mësojnë të:

  • Krijo tabela

Pjesa teorike

Piktogram Emri Faqe Emërimi
Imazhi Shtesë
Forma Shtesë
DrawGrid

(tabela me figura)

Shtesë
Grafiku

(diagramet dhe grafikët)

Shtesë
Kutia e bojës

(dritare vizatimi)

Sistemi

Forma Furçë

Imazhi:

Grafiku:

Metoda Qartë

Metoda Shtoni

Metoda AddXY

PaintBox:

Ushtrimi 1

Detyra 2

Detyra 3

me PaintBox1, kanavacë do

Furça.Ngjyra: = clE kuqe;

Pen.Ngjyra: = clE gjelbër;

Stili i stilolapsit:= psDash;

Pen.Ngjyra: = clE kuqe;

Shpjegim:

Ushtrimi 4

Var i: numër i plotë;

Seria1.E qartë;

për i: = 0 deri në 22 do

Seria 1.AddXY (i * 0.29,10 *mëkat (i * 0.29), ",clE gjelbër) ;, ku i * 0,29 (AXValue) ky është një argument dhe 10* mëkat (i * 0,29) (AYVlera)

  1. y = 3,2 * (14 * x)
  2. y = mëkat (x)
  3. y = cos (x)
  4. y = x 2 + cos (x)
  5. y = x 2 -4,5 * 4

Ushtrimi 5

me ComboBox1 filloni

Artikujt: = Screen.Fonts;

  1. Ruani dhe ekzekutoni projektin.
  1. Detyrë në punë.
  2. Ngjit kodin që ke shkruar
  3. Konkluzioni për punën e bërë. Tema : Përdorimi i aftësive grafike.

    Qëllimi i punës laboratorike- Njihuni me aftësitë grafike Delfi.

    Nxënësit duhet të mësojnë të:

    • Krijo ndonjë pjesë grafike J
    • Përdorni aftësitë grafike
    • Aplikoni aftësitë grafike
    • Krijo tabela

    Pjesa teorike

    Delphi ju lejon të zhvilloni aplikacione që mund të shfaqin grafikë: diagrame, vizatime, ilustrime. Për të shfaqur informacionin grafik, biblioteka Delphi ofron komponentë, lista e të cilave është dhënë në tabelën e mëposhtme:

    Piktogram Emri Faqe Emërimi
    Imazhi Shtesë Përdoret për të shfaqur grafika: miniaturë, bitmap dhe metafiles
    Forma Shtesë Përdoret për të ndërtuar primitive gjeometrike
    DrawGrid

    (tabela me figura)

    Shtesë Përdoret për të krijuar një tabelë në aplikacion që mund të përmbajë grafikë
    Grafiku

    (diagramet dhe grafikët)

    Shtesë Përdoret për të krijuar grafikët dhe grafikët
    Kutia e bojës

    (dritare vizatimi)

    Sistemi Përdoret për të krijuar një zonë në formën në të cilën vizatoni

    Përveç kësaj, mund të shfaqni dhe futni informacione grafike në sipërfaqen e çdo komponenti të dritares që ka një veçori Canvas. Vizatimet e krijuara gjatë ekzekutimit të aplikacionit mund të jenë ose të palëvizshme ose të animuara.

    Forma : vetëm me kusht mund t'i atribuohet mjeteve të shfaqjes së informacionit grafik, pasi ai thjesht përfaqëson forma të ndryshme gjeometrike, të hijezuara siç duhet. Vetia kryesore e këtij komponenti është Shape, e cila mund të marrë vlera, Furçë(brush) - kjo veti është një objekt i tipit TBrush që ka një sërë nënveti, në veçanti: ngjyrën (Brush.Color) dhe stilin (Brush.Style) të mbushjes së formës. Vetia e tretë specifike e komponentit Shape është Pen, e cila përcakton stilin e linjave.

    Imazhi: vetitë kryesore: Picture - është përgjegjës për ngarkimin e imazhit, Stretch - është përgjegjës për madhësinë e imazhit në komponentin Image, AutoSize - është përgjegjës për madhësinë e komponentit në të cilin është ngarkuar imazhi, duke marrë parasysh madhësinë e imazhin.

    Grafiku: Për të vendosur vlerat e shfaqura, duhet të përdorni metodat e Serisë. Le t'i hedhim një sy tre prej tyre.

    Metoda Qartë fshin serinë nga të dhënat e futura më parë.

    Metoda Shtoni: - Shto (Const AValue: Double; Const ALabel: String; AColor: TColor)

    ju lejon të shtoni një pikë të re në diagram. Parametri AValue korrespondon me vlerën e shtuar të funksionit, dhe vlera e argumentit të funksionit plotësohet automatikisht, kështu që nuk keni nevojë ta vendosni atë, parametri ALabel është emri që do të shfaqet në diagram dhe në legjendë. , AColor është ngjyra. Parametri ALabel është opsional, mund ta vendosni bosh: ".

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

    ju lejon të shtoni një pikë të re në grafikun e funksionit. Parametrat AXValue dhe AYValue korrespondojnë me argumentin dhe funksionin. Parametrat ALabel dhe AColor janë të njëjtë si në metodën Shto.

    PaintBox: të jetë në faqen e Sistemit. Është një dritare e thjeshtë kanavacë ku mund të vizatoni imazhe arbitrare. Mjetet grafike gjenden në vetitë Font, Brush dhe Pen. Kanavacë (kanavacë) gjendet në vetinë Canvas të komponentit. Vetë piktura është programuar në mbajtësin e ngjarjeve onPaint.

    Ushtrimi 1

    1. Krijoni një program që ju prezanton me komponentin Image. Është e nevojshme të vendosen komponentët: Label, Image, BitBtn, Button. Regjistrohu si në imazh dhe ngarko çdo imazh. Rregulloni komponentët në mënyrë që në Image1 imazhi të përshtatet në korniza, dhe në Image2 imazhi të përputhet me madhësinë e tij. Bëni këshilla veglash, kur rri pezull mbi çdo imazh, vetia Hint është përgjegjëse për sugjerimet, për të shfaqur duhet të futni tekstin dhe të aktivizoni sugjerimet në veçorinë ShowHint.

    Detyra 2

    1. Rritni madhësinë e formës dhe shtoni komponentët e mëposhtëm: Forma, Etiketa. Abonohu.
    2. Aplikoni stile për çdo komponent Shape sipas imazhit:

    Detyra 3

    1. Për shembull, le të vendosim komponentin PaintBox në një formë. Trajtuesi OnPaint:

    me PaintBox1, kanavacë do

    Furça.Ngjyra: = clE kuqe;

    Byrek (12,100,140,280,12,100,140,280);

    Pen.Ngjyra: = clE gjelbër;

    Stili i stilolapsit:= psDash;

    Drejtkëndësh (120,60, Gjerësia, Lartësia);

    Pen.Ngjyra: = clE kuqe;

    Polyline ();

    TextOut (75,20, 'Teksti juaj mund të jetë këtu!');

    Shpjegim: Rreshti i parë vendos ngjyrën e mbushjes: Brush.Color: = clRed; E dyta vizaton një pjesë të elipsës: Byrek (12,100,140,280,12,100,140,280); Linjat e mëposhtme vendosin parametrat e stilolapsit (si format do të kenë një kufi), gjerësinë, ngjyrën dhe stilin e rreshtit: Pen. Gjerësia: = 4; Pen.Ngjyra: = clE gjelbër; Stili i stilolapsit:= psDash; Por në këtë rast do të shohim një vijë të fortë, pasi nëse trashësia është më shumë se një piksel, stili i linjës do të jetë psSolid (i ngurtë). Linja e mëposhtme është përgjegjëse për vizatimin e katrorit: Drejtkëndësh (120,60, Gjerësia, Lartësia); Komanda e mëposhtme vizaton një yll të kuq: Polyline (); Rreshti i fundit është përgjegjës për daljen e tekstit: TextOut (75,20, "Teksti juaj mund të jetë këtu!");

    Ushtrimi 4

    1. Bëni një program që paraqet një grafik të dhënë të funksionit y = 10 * sin (x)

    1. Zmadhoni formularin dhe vendosni komponentin TChart mbi të nga skeda Shtesë dhe vendosni komponentin Button, Label. Shtrijeni TChart-in e ri në një madhësi të përshtatshme për zhvillim.
    2. Ne hyjmë në redaktuesin e grafikut duke klikuar dy herë mbi komponentin. Redaktimi dhe personalizimi i pamjes së Serive. Për ta bërë këtë, klikoni Shto dhe zgjidhni llojin e grafikut të linjës dhe klikoni OK. Për të ndryshuar titullin, shtypni Title dhe futni formulën y = 10 * sin (x).
    3. Shkruani kodin për vizatimin e grafikut në ngjarjen OnClick të komponentit Button:

    Var i: numër i plotë;

    Seria1.E qartë;

    për i: = 0 deri në 22 do

    Seria 1.AddXY (i * 0.29,10 * sin (i * 0.29), ”, clGreen);

    Shpjegim: Seria e metodës1.E qartë; fshin serinë nga të dhënat e futura më parë, në mënyrë që gjatë përditësimit të mos ketë vlera të vjetra. Për të vizatuar një grafik, ju nevojiten vlera, në rastin tonë 22 vlera, në të cilat grafiku vizatohet nga funksioni Seria 1.AddXY (i * 0.29,10 *mëkat (i * 0.29), ",clE gjelbër) ;, ku i * 0,29 (AXValue) ky është një argument dhe 10* mëkat (i * 0,29) (AYVlera) vlera e llogaritjes së funksionit, ”(ALabel) emri që do të shfaqet në diagram dhe në legjendë mund të lihet bosh, dhe clGreen (ACcolor) është ngjyra e linjës.

    1. Përfundoni vetë detyrën e mëposhtme: vizatoni një grafik funksionesh
    2. y = 3,2 * (14 * x)
    3. y = mëkat (x)
    4. y = cos (x)
    5. y = x 2 + cos (x)
    6. y = x 2 -4,5 * 4

    Ushtrimi 5

    1. Krijoni një aplikacion që ju lejon të shikoni karakteret në fontet e sistemit.
    2. Zmadhoni formën, vendosni DrawGrid1, ComboBox1, Label. Vendosni vetitë e mëposhtme për komponentin DrawGrid1: RowCount = 7, ColCount = 32, FixedCols = 0, FixedRows = 0, DafaultColWidth = 20, DefaultRowHeight = 20.
    3. Për të rivizatuar përmbajtjen e secilës qelizë, krijoni një mbajtës ngjarjesh OnDrawCell për komponentin DrawGrid1. Për të shfaqur karakteret e fontit, ne do të përdorim veçorinë Canvas të komponentit DrawGrid1. Ne kemi nevojë direkt për metodën TextRect të veçorisë Canvas. Kjo metodë përdoret për të shfaqur informacionin e tekstit në një qelizë specifike. Trajtuesi i ngjarjes do të duket kështu:

    DrawGrid1.Canvas.textrect (rect, Rect.Left, Rect.Top, char ((ARow + 1) * 32 + acol));

    1. Ruani projektin. Sigurohuni që qelizat në tabelë shfaqin karakteret në fontin e paracaktuar të sistemit.
    2. Për të zgjedhur një font, ne do të përdorim komponentin ComboBox1. Në mënyrë që ky komponent të përmbajë të gjitha fontet e ekranit, është e nevojshme t'i shtoni ato në listë gjatë krijimit të formularit. Emrat e të gjitha shkronjave të ekranit mund të gjenden duke përdorur ndryshoren globale Screen të tipit TScreen. Ky variabël shtohet automatikisht në të gjitha aplikacionet Delphi. Variabli Screen përmban informacion për gjendjen aktuale të ekranit të aplikacionit: emrat e formularëve dhe moduleve të të dhënave të përdorura nga aplikacioni; të dhëna për formën aktive dhe përbërësit e përdorur nga ky formular; madhësia dhe rezolucioni i ekranit të përdorur; informacion në lidhje me kursorët dhe fontet e disponueshme për aplikacionin. Informacioni në lidhje me fontet e disponueshme për aplikacionin gjendet në veçorinë Font të ndryshores Screen.
    3. Krijoni një mbajtës të ngjarjeve onCreate për formularin dhe shtoni deklarata në të:

    me ComboBox1 filloni

    Artikujt: = Screen.Fonts;

    ItemIndex: = Items.IndexOf (Font.Name);

    1. Ruani dhe ekzekutoni projektin. Komponenti DrawGrid1 përmban karakteret e fontit të vendosur në ComboBox1.
    2. Për të lidhur vlerën e emrit të fontit për DrawGrid1 dhe ComboBox1, le të krijojmë një mbajtës tjetër të ngjarjeve:

    DrawGrid1.Font.Emri:=ComboBox1.Text;

    1. Ruani dhe ekzekutoni projektin.
    1. Numri, tema, qëllimi i punës laboratorike.
    2. Detyrë në punë.
    3. Përshkrimi i të dhënave hyrëse, të ndërmjetme dhe rezultati me tregues të llojit të tyre.
    4. Programoni në gjuhën e programimit.
    5. Rezultati i ekzekutimit të programit (Të dhënat e futura dhe të dhënat e marra)
    6. Ngjit kodin që ke shkruar
    7. Konkluzioni për punën e bërë.

"Shfaqja e informacionit grafik në Delphi"
Plani i temës:
1. Metodat e paraqitjes së grafikës
informacion në Delphi.
2. Shfaqja e fotove.
3. Shfaqja e gjeometrisë
shifrat.

1. Metodat për shfaqjen e informacionit grafik.
Ka disa mënyra në Delphi
shfaqja e informacionit grafik:
Përfundimi i parapërgatitur
imazhet (përbërësit e imazhit,
Forma);
Ndërtimi i grafikëve dhe grafikëve
(Diagrami i komponentit, etj.);
Imazhe
në mënyrë programore (objekt
Kanavacë).

2. Shfaqja e fotove.
Shfaqja e fotove duke përdorur
ne kemi ekzaminuar komponentin Imazh në
një nga temat e mëparshme.
Këtu shikojmë një shembull
zbatimi i animacionit më të thjeshtë
duke ndryshuar periodikisht
fotografia e shfaqur në
Komponentët e imazhit.
Shkoni për një shembull.


Shfaqja e protozoarëve
forma gjeometrike në formë
ofron një komponent Shape.

3. Shfaqja e formave gjeometrike.
Karakteristikat kryesore të komponentit Shape:
Furçë
Stilolaps
Forma
Ngjyra (.Ngjyra) dhe stili (.Stil) për
duke mbushur formën.
Ngjyra (.Ngjyra), stili (.Stil), gjerësia
(.Width) dhe metoda e daljes (.Mode) e linjave
shifrat.
Pamje e formës gjeometrike.

3. Shfaqja e formave gjeometrike.
Nga komponentë të shumtë të formës
ju mund të krijoni vizatime të thjeshta.
Ndryshimi programor i pozicionit
(.Majtas, .Sipër) madhësia (.Gjerësia, . Lartësia) dhe
ngjyra (Brush.Color) e komponentëve Shape
në figurën që mund të zbatoni
elementet e animacionit më të thjeshtë.
Konsideroni një shembull.

4. Ndërtimi i grafikëve dhe diagrameve.
Diagramet janë të destinuara për
vizualizimi më i mirë
vargje të dhënash numerike, të tyre
shfaqja dhe analiza vizuale.
Shembull.
Për hartimin e grafikëve në Delphi
ka disa komponentë,
një prej tyre është komponenti i Grafikut (seksioni
TeeChart Std).

4. Ndërtimi i grafikëve dhe diagrameve.
Pamje e komponentit Grafik pas tij
cilësimet në formular:

4. Ndërtimi i grafikëve dhe diagrameve.
Përveç "Inspektorit të Objekteve", aksesi në
vetitë e komponentit Grafik, mundeni
merrni duke hapur një dritare të veçantë
dialog (butoni i djathtë në komponentin \
Redakto grafikun ...)
Shtoni
seritë e të dhënave
Ndrysho llojin
grafikët

4. Ndërtimi i grafikëve dhe diagrameve.
Zgjedhja e një lloji grafiku:

4. Ndërtimi i grafikëve dhe diagrameve.
Vendosja e vetive për boshtet e koordinatave
(Aksi):

4. Ndërtimi i grafikëve dhe diagrameve.
Të dhënat për t'u shfaqur zakonisht janë
transferuar në grafik në mënyrë programore,
shembull:
Seria1.E qartë; (grua e pastër)
për i: = 1 deri në N bëj
Seria1.addxy (i, A [i], '', clGreen);
Vlera nga
boshti X
Vlera nga
boshti Y
Nënshkrimi
boshti X
Ngjyra e të dhënave
në diagram
Konsideroni një shembull ndërtimi
grafiku i funksionit y = Sin (x)

Me tutje:
Puna laboratorike nr. 13.1.
“Duke shfaqur foto dhe gjeometrike
figurat, animacioni i tyre”.
Ushtrimi:
1) Zhvilloni një aplikacion për ta zbatuar
animacioni më i thjeshtë sipas periodikëve
ndryshimi i figurës së shfaqur në
Komponentët e imazhit. (Numri i fotove nuk është
më pak se tre, merrni fotografi
më vete).

Ushtrimi:
2) Dilni dhe vizatoni një figurë nga
Komponentët e formës. Në mënyrë programore
ndryshimi i pozicionit, madhësisë ose ngjyrës
Komponentët e formës në figurë
për të kryer elemente nga më të thjeshtat
animacion.

Me tutje:
Puna laboratorike nr. 13.2.
“Ndërtimi i grafikëve dhe diagrameve”.
Ushtrimi:
1) Ndrysho aplikacionin nga
Puna laboratorike nr. 9 (Afisho
të dhënat në tabelë). Shto mundësi
duke shfaqur disa të dhëna nga tabela
në një tabelë me shtylla ose byrek.
2) Ndërtoni një grafik të një funksioni të caktuar.

Lista e komponentëve për shfaqjen e informacionit grafik

Për të shfaqur informacionin grafik në bibliotekën Delphi, sigurohen komponentët, lista e të cilave është dhënë në tabelën 4.1.

Tabela 4.1 Komponentët e paraqitjes së informacionit grafik Piktogram

Komponenti

Faqe

Përshkrim

Imazhi

Përdoret për të shfaqur grafika: ikona, bitmap dhe metafiles.


PaintBox (dritare për vizatim)

Përdoret për të krijuar një zonë në një formë në të cilën vizatoni.


DrawGrid (tabela e figurave)

Përdoret për të shfaqur të dhëna jo tekstuale në rreshta dhe kolona.


Grafiku (grafikë dhe grafikë)

Komponenti i përket familjes së komponentëve TChart që përdoren për të krijuar grafikët dhe grafikët.


Për më tepër, ju mund të shfaqni dhe futni informacione grafike në sipërfaqen e çdo Afishimi të grafikëve në Kanavacë.

Kanavacë Kanavacë nuk është një komponent, kështu që në mënyrë rigoroze nuk duhet të përfshihet në këtë libër. Por meqenëse shumë komponentë, në veçanti formularët, kanë një kanavacë dhe kanavacë ofron mundësinë për të shfaqur informacione të ndryshme grafike, këshillohet që të jepni disa informacione fillestare për kanavacën.

Një kanavacë është një zonë e një komponenti në të cilin mund të vizatoni ose shfaqni imazhe të paraqitura. Ai përmban veti dhe metoda që thjeshtojnë shumë grafikën Delphi. Të gjitha ndërveprimet komplekse me sistemin janë të fshehura për përdoruesin, kështu që një person që është plotësisht i papërvojë në grafikë kompjuterike mund të vizatojë në Delphi.

Çdo pikë e kanavacës ka koordinata X dhe Y... Sistemi i koordinatave të kanavacës, si kudo në Delphi, e ka origjinën në këndin e sipërm të majtë të kanavacës. Koordinoni X rritet ndërsa lëvizni nga e majta në të djathtë dhe koordinata Y- kur lëvizni nga lart poshtë. Koordinatat maten në pixel. Një piksel është elementi më i vogël në sipërfaqen e një vizatimi që mund të manipulohet. Vetia më e rëndësishme e një piksel është ngjyra e tij.

Kanavacja ka pronën Piksele... Kjo veti është një grup dy-dimensionale që kontrollon ngjyrat e kanavacës. Për shembull, Kanavacë. Piksele përputhet me ngjyrën e pikselit 10 nga e majta dhe 20 nga lart. Një grup pikselësh mund të trajtohet si çdo veçori: ndryshoni ngjyrën duke i dhënë një piksel një vlerë të re, ose përcaktoni ngjyrën e tij nga një vlerë e ruajtur në të. Për shembull, Kanavacë. Piksele: = 0 ose Kanavacë. Piksele: = clE zezaështë caktimi i pikselit në të zezë.

Pronës Piksele mund të përdoret për të pikturuar në kanavacë. Le të përpiqemi të vizatojmë një grafik piksel pas piksel të një sinusoidi në kanavacën e formës. Për ta bërë këtë, në trajtuesin e ngjarjeve të formularit OnPaint(vizatim) mund të futni kodin e mëposhtëm:

TForma1. FormPaint (Dërguesi: TObject);

var, Y: real; // koordinatat e funksionit, PY: longint; // koordinatat e pikselave

fillojnë: = clE bardhë;

për PX: = 0 te Gjerësia e klientit bëj

(X është argumenti i komplotit,

: = PX * 4 * Pi / Gjerësia e klientit ;: = Sin (X);

(PY - koordinata e pikselit,

: = trunc (Klient Lartësia - (Y + 1) * Lartësia e Klientit / 2);

(Ngjyra e të përzgjedhurit

pixel (Rreth ndriçimit))... Piksele: = 0;

fund;

Ekzekutoni këtë aplikacion testimi dhe duhet të shihni daljen e treguar në Figurën 4.1a. Grafiku i sinusoidit doli, megjithëse jo shumë i mirë, sepse ndahet në pika të veçanta - piksel.

Kanavacë - objekt i klasës TCanvas ka shumë metoda që ju lejojnë të vizatoni grafikë, vija, forma duke përdorur vetinë Stilolaps- pendë. Kjo pronë është një objekt, i cili nga ana tjetër ka një sërë veçorish. Një prej tyre është një pronë që tashmë e njihni Ngjyrë- ngjyra me të cilën aplikohet vizatimi. Prona e dytë është Gjerësia(gjerësia e vijës). Gjerësia është dhënë në pixel. Gjerësia e paracaktuar është 1.

Pronës Stili përcakton pamjen e vijës. Kjo pronë mund të marrë vlerat e mëposhtme:

Kanavacja ka pronën PenPos lloji TPoint(cm .). Kjo veti specifikon pozicionin aktual të stilolapsit në koordinatat e kanavacës. Lëvizja e stilolapsit pa vizatuar vijë, d.m.th. Ndryshimi PenPos, prodhuar me metodën e kanavacës MoveTo (X, Y). Këtu ( X, Y) - koordinatat e pikës në të cilën është zhvendosur stilolapsi. Kjo pikë aktuale bëhet origjina, nga e cila metoda LineTo (X, Y) ju mund të vizatoni një vijë në një pikë me koordinata ( X, Y). Në këtë rast, pika aktuale zhvendoset në pikën përfundimtare të linjës dhe një thirrje e re LineTo do të nxjerrë një pikë nga kjo pikë e re aktuale.

Le të përpiqemi të vizatojmë grafikun sinus nga shembulli i mëparshëm me stilolaps. Në këtë rast, mbajtësi i ngjarjes i formularit OnPaint mund të duket si:

procedurë TForma1. FormPaint (Dërguesi: TObject);

var, Y: real; // koordinatat e funksionit, PY: longint; // koordinatat e pikselave

fillojnë: = clE bardhë ;. MoveTo (0, ClientHeight div 2);

për PX: = 0 te Gjerësia e klientit bëj

(X është argumenti i komplotit,

që korrespondon me pikselin me koordinatë PX): = PX * 4 * Pi / Gjerësia e klientit ;: = Sin (X);

(PY - koordinata e pikselit,

që korrespondon me koordinatën Y): = trunc (Klient Lartësia - (Y + 1) * Lartësia e Klientit / 2);

(Një vijë është tërhequr në grafik)... LineTo (PX, PY);

Ju mund të shihni rezultatin e aplikacionit në këtë version në Figurën 4.1 b. Siç mund ta shihni, cilësia e grafikës është përmirësuar ndjeshëm.

Stilolapsi mund të tërheqë jo vetëm vija të drejta, por edhe forma. Për një listë të plotë të metodave të kanavacës që përdorin një stilolaps, shihni ndihmën në internet të Delphi. Ndërkohë, si shembull, do të japim vetëm një prej tyre - Elipsa që vizaton një elips ose rreth. Faturohet si

procedurë Ellipse (X1, Y1, X2, Y2: Integer);

ku parametrat X1, X2, Y1, Y2 përcaktoni koordinatat e drejtkëndëshit që mbyll një elips ose rreth. Për shembull, operatori

Ellipse (10, 40, 20, 50);

do të vizatojë një rreth me diametër 10 dhe me koordinata qendrore (15, 45).

Format në përgjithësi vizatohen jo bosh, por të mbushura me vetinë e kanavacës Furçë- furçë. Pronës Furçëështë një objekt që nga ana tjetër ka një sërë veçorish. Pronës Ngjyrë përcakton ngjyrën e mbushjes. Pronës Stili përcakton modelin e mbushjes (çeljen). Parazgjedhja është Stili barazohet bs E ngurtë, që do të thotë ngjyrë e fortë Ngjyrë.

Në stilolaps Stilolaps ka edhe një pronë tjetër që nuk e kemi shqyrtuar ende. Kjo pronë - Modaliteti(modaliteti). Parazgjedhja është Modaliteti = pmKopjo... Kjo do të thotë që linjat vizatohen me ngjyrën e specifikuar në pronë Ngjyrë... Por mënyra të tjera janë të mundshme, në të cilat merret parasysh jo vetëm ngjyra Ngjyrë por edhe ngjyra e pikselëve përkatës të sfondit. Më interesante nga këto mënyra është pmNotXor- shtim në sfond nga anasjelltas ekskluzive OR. Nëse ky modalitet është vendosur, atëherë rivizatimi i së njëjtës formë në të njëjtin vend në kanavacë heq imazhin e vizatuar më parë dhe rikthen ngjyrat e pikselit që ishin përpara imazhit të parë të formës.

Kjo veçori e modalitetit pmNotXor mund të përdoret për të krijuar animacione të thjeshta. Mjafton të vizatoni diçka, pastaj të fshini atë që është vizatuar, ta rivizatoni paksa të ndryshuar - dhe vizatimi do të duket se do të marrë jetë.

Mundohuni t'i bëni vetes një animacion të thjeshtë - një rreth në lëvizje. Filloni një aplikacion të ri dhe futuni në seksion zbatimi fut reklamën

X, Y: numër i plotë;

Kjo do të prezantojë variabla globale X dhe Y- koordinatat aktuale të figurës.

Në formën e ngjarjes OnPaint futni deklarata

Furçë. Ngjyra: = clE bardhë ;: = clE bardhë ;. Stilolaps. Modaliteti: = pmNotXor;

I pari nga këta operatorë vendos ngjyrën e furçës në të bardhë. Furçë... Kjo do të thotë që rrethi juaj do të mbushet me të bardhë brenda. Operatori i dytë vendos ngjyrën e sfondit të sipërfaqes së formës në të bardhë.

Operatori i tretë vendos modalitetin e stilolapsit pmNotXor i cili do t'ju lejojë të fshini imazhin e vjetër përpara se të pikturoni të riun.

Edhe animacioni më i thjeshtë ka nevojë për sinkronizim. Përndryshe, shpejtësia e lëvizjes do të përcaktohet nga shpejtësia e kompjuterit. Prandaj, transferoni komponentin në formë Timer- timer nga faqja System. Ky komponent është përshkruar në seksionin 5.7 .

Aty mund të shihni përshkrimin e detajuar të tij. Për momentin, vendosni pronën e tij Intervali e barabartë, për shembull, 30 (kjo është koha e qëndrimit në milisekonda, por koha reale e qëndrimit do të jetë më e gjatë - shih seksionin 5.7) dhe vendosni veçorinë Aktivizuar të barabartë i rremë(kjo do të thotë që kohëmatësi nuk do të fillojë automatikisht kur të hapet aplikacioni).

Tek mbajtësi i ngjarjeve të këtij komponenti OnTimer futni deklarata

// Fshini imazhin e vjetër... Ellipse (X-5, Y, X + 5, Y-1Q); (X);

// Vizatoni një imazh të ri... Ellipse (X-5, Y, X + 5, Y-10);

// Ndalo kur të arrish në fund të formularit

nëse(X> = Gjerësia e klientit-20) pastaj... Aktivizuar: = false;

I pari nga këta operatorë vizaton një rreth ku është vizatuar më herët, d.m.th. fshin imazhin e mëparshëm.

Operatori i fundit e ngrin imazhin në skajin e formularit.

Tani tërhiqni butonin në formë Butoni dhe vendosni operatorët në mbajtësin e klikimeve mbi të

X: = 10 ;: = 100 ;. Ellipse (X-5, Y, X + 5, Y-10) ;. Aktivizuar: = e vërtetë;

Dy operatorët e parë vendosin koordinatat fillestare të rrethit. Operatori i tretë vizaton rrethin në pozicionin e tij fillestar dhe i katërti fillon kohëmatësin.

Përkthejeni aplikacionin, ekzekutoni atë, klikoni butonin. Do të shihni një imazh të një rrethi që lëviz përgjatë formës nga e majta në të djathtë. Dhe pastaj thjesht lidhni imagjinatën tuaj dhe transformoni këtë aplikacion jo shumë interesant në diçka më argëtuese.

Në kanavacë, ju mund të shfaqni jo vetëm imazhe të krijuara në mënyrë programore, por edhe imazhe të ruajtura në skedarë grafikë. Vetëm kanavacë në vetvete nuk ka një metodë për të ngarkuar një imazh nga një skedar. Prandaj, skedari duhet të ngarkohet në ndonjë objekt tjetër grafik që mund të perceptojë informacionin e skedarëve grafikë. Dhe më pas rishkruajeni imazhin nga ky objekt në kanavacë duke përdorur metodën e kanavacës Vizatoni... Përshkrimi i tij:

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

Këtu janë parametrat X dhe Y përcaktoni koordinatat e këndit të sipërm të majtë të vendosjes së figurës në kanavacë, a Grafike- një objekt që ruan informacion. Një objekt i tillë mund të jetë, për shembull, një objekt i llojit TBitMap, i destinuar për ruajtjen e matricave të biteve. Le të shohim se si duket gjithçka në praktikë.

Hapni një aplikacion të ri, tërhiqni komponentin në formë OpenPictureDialog nga faqja e Dialogëve (ky është një komponent i dialogut për hapjen e skedarëve grafikë - shih seksionin 8.2 ) dhe butonin Butoni... Vendi OpenPictureDialog kudo në formular, pasi ky komponent nuk është vizual, dhe vendoseni butonin në fund të formularit. Shtoni kodin në mbajtësin e klikimeve të butonit:

procedurë TForma1. Button1Click (Dërguesi: TObject);

var: TBitMap;

// Zgjidhni një skedar grafik nga përdoruesi

nëse OpenPictureDialog1. Ekzekutoni pastaj

// Krijo një objekt BitMap të tipit TBitMap: = TBitMap. Krijo;

// Sillni imazhin në kanavacën e formularit... Draw (10, 10, BitMap);

// Shkatërroni objektin BitMap... Falas;

fund;

Ky kod krijon një objekt të përkohshëm të tipit TBitMap Me emër BitMap... Pastaj thirret dialogu për hapjen e një skedari grafik OpenPictureDialog1 dhe nëse përdoruesi ka zgjedhur një skedar, atëherë ai ngarkohet në BitMap metodë LoadFromFile... Pastaj me metodën Vizatoni Imazhi i ngarkuar kopjohet në kanavacë në zonën me koordinatat e këndit të sipërm të majtë (10,10). Pas kësaj objekti i përkohshëm BitMap të shkatërruara.

Drejtoni aplikacionin tuaj dhe klikoni në butonin e tij. Do të shihni që mund të ngarkoni çdo lloj skedari grafik. bmp dhe do të shfaqet në kanavacën e formularit (shih Figurën 4.2 a). Ju mund të gjeni skedarë grafikë në drejtorinë Images. Në Delphi 5 dhe 4, zakonisht ndodhet në një drejtori. \ skedarët e programit \ Common Files \ Borland Shared. Në Delphi 3, ai ndodhet në drejtori. \ skedarët e programit \ Borland \ Delphi 3, dhe në Delphi 1 - në drejtorinë Delphi 16. Në direktorinë Images ekziston, në veçanti, nëndrejtoria \ Images \ Splash \ 16Color \, e cila përmban skedarin e ngarkuar në shembullin në figurë. 4.2

Ju keni krijuar një aplikacion mjaft të mirë për shikimin e skedarëve grafikë. Por tani le të përpiqemi të shohim të metën e saj kryesore. Pa e mbyllur aplikacionin tuaj, shkoni te ndonjë program tjetër, për shembull, kthehuni në Delphi. Më pas, pa bërë asgjë atje, kthehuni te aplikacioni juaj aktual. Nëse dritarja e programit në të cilën keni dalë mbulon plotësisht dritaren e aplikacionit tuaj, atëherë duke u kthyer në të do të shihni që fotografia në dritare është zhdukur. Nëse dritarja e aplikacionit tuaj ishte vetëm pjesërisht e mbivendosur, atëherë duke u kthyer në aplikacionin tuaj, mund të shihni një rezultat të ngjashëm me atë të paraqitur në Figurën 4.2 b.

Mund të shihni se nëse dritarja e ndonjë aplikacioni tjetër përkohësisht mbivendoset me dritaren e aplikacionit tuaj, atëherë imazhi i vizatuar në kanavacën e formularit dëmtohet. Le të shohim se si mund ta eliminoni këtë mangësi.

Nëse dritarja ishte mbivendosur dhe imazhi ishte i dëmtuar, sistemi operativ informon aplikacionin se diçka ka ndryshuar në mjedis dhe se aplikacioni duhet të ndërmarrë veprimet e duhura. Sapo kërkohet një përditësim i dritares, krijohet një ngjarje për të OnPaint... Në mbajtësin e kësaj ngjarjeje (në rastin tonë, ngjarja e formularit), duhet të rivizatoni imazhin.

Rivizatimi mund të bëhet në mënyra të ndryshme në varësi të aplikacionit. Në shembullin tonë, ne mund të zhvendosim deklaratën e një ndryshoreje BitMap(operator var BitMap: TBitMap) jashtë procedurës së mësipërme, d.m.th. e bëjnë këtë variabël globale duke e vendosur direkt në seksion zbatimi... Operatori BitMap. Falas mund të zhvendoset te mbajtësi i ngjarjeve të formularit OnDestroy që ndodh kur aplikacioni është i mbyllur. Më pas, gjatë gjithë kohës së ekzekutimit të aplikacionit tuaj, do të keni një kopje të figurës në komponent BitMap dhe ju vetëm duhet të hyni në mbajtësin e ngjarjeve OnPaint formon vetëm një operator:

Draw (10, 10, BitMap);

Bëni këtë dhe do të shihni që imazhi në formular nuk përkeqësohet për asnjë dritare të mbivendosur.

Përveç metodës së konsideruar Vizatoni kanavacë ka gjithashtu një metodë kopjimi CopyRect:

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

Metoda kopjon atë të specifikuar nga parametri Burimi zona e imazhit në kanavacën e burimit të imazhit Kanavacë në parametrin e specifikuar Dest zona e kësaj kanavacë. Një lloj TRect karakterizojnë zonat drejtkëndore Burimi dhe Dest, të përshkruar tashmë në seksionin 3.2 .

Për shembull, operatori

CopyRect (MyRect2, Bitmap. Canvas, MyRect1);

kopje në kanavacën e formularit në zonë MyRect2 imazh nga zona MyRect1 kanavacat përbërëse Bitmap.

Metoda e kopjimit CopyRect prodhuar në mënyrën e caktuar nga prona Modaliteti i Kopjimit... Si parazgjedhje, kjo pronë ka vlerën cmSrcKopjo, që do të thotë thjesht zëvendësimi i imazhit të përfshirë më parë në zonë Dest, mbi imazhin e kopjuar. Vlerat e tjera të mundshme Modaliteti i Kopjimit ju lejojnë të kombinoni imazhe, por shqyrtimi i tyre është jashtë objektit të këtij libri.

Ne do të kufizojmë veten në këto informacione bazë në lidhje me daljen e informacionit grafik në kanavacë. Seksioni 3.2 u raportua informacion në lidhje me daljen në kanavacën e tekstit. Në përgjithësi, kanavacë është një objekt kompleks me shumë më tepër veti dhe metoda. Por kjo kërkon një diskutim të hollësishëm që është përtej qëllimit të këtij libri. Libri tjetër në serinë Gjithçka Rreth Delphi do t'i shqyrtojë këto çështje në më shumë detaje.

Një komponent i dritares që ka vetinë Kanavacë- kanavacë.

Komponentët e imazhit dhe të PaintBox

Komponentët Imazhi dhe Kutia e bojës përfaqësojnë një sipërfaqe të kufizuar me një kanavacë në të cilën mund të futen imazhet, siç përshkruhet në seksionin 4.2 ... Në këtë rast, komponenti Kutia e bojës, në fakt, nuk jep asgjë të re në krahasim me vizatimin e një forme në telajo. Duke vizatuar Kutia e bojës në vend të formës, nuk ka përparësi, përveç, ndoshta, një lehtësim në vendndodhjen e një ose më shumë modeleve në zonën e dritares.

Por përveç këtyre aftësive, komponenti Imazhi ka veti që ju lejojnë të punoni me lloje të ndryshme skedarësh grafikë Mbështet tre lloje skedarësh - bitmap, ikona dhe metafiles. Të tre llojet e skedarëve ruajnë imazhe; i vetmi ndryshim është në mënyrën e ruajtjes së tyre brenda skedarëve dhe në mënyrën e aksesit në to. Bitmap (skedar me shtesë. bmp) shfaq ngjyrën e secilit piksel në imazh. Në këtë rast, informacioni ruhet në atë mënyrë që çdo kompjuter të mund të shfaqë një imazh me një rezolucion dhe numër ngjyrash që korrespondojnë me konfigurimin e tij.

Piktogramet (skedarët me shtesën. ico) janë matrica të vogla bit. Ato përdoren kudo për të përfaqësuar ikonat e aplikacioneve, në butonat e shpejtë, në artikujt e menysë, në lista të ndryshme. Mënyra e ruajtjes së imazheve në miniaturë është e ngjashme me ruajtjen e informacionit në bitmaps, por ka disa dallime. Në veçanti, ikona nuk mund të shkallëzohet, ajo ruan madhësinë në të cilën është krijuar.

Metafiles nuk ruajnë sekuencën e pjesëve që përbëjnë imazhin, por informacionin se si është krijuar imazhi. Ata ruajnë sekuenca të komandave të vizatimit që mund të përsëriten kur rikrijohet një imazh. Kjo i bën këta skedarë në përgjithësi më kompakt se skedarët bitmap.

Komponenti Imazhi ju lejon të shfaqni informacionin e përfshirë në skedarët grafikë të të gjitha llojeve të specifikuara. Kjo bëhet nga prona e saj Foto- objekt i llojit TPfigura.

Figura 4.3 Dritarja e Redaktuesit të Fotografive


Për t'u njohur me këtë veçori, hapni një aplikacion të ri dhe tërhiqeni komponentin në formë. Imazhi... Shtrijeni atë ose vendosni pronën e tij Rreshtoni të barabartë klienti në mënyrë që të zërë të gjithë zonën e klientit të formularit. Klikoni në butonin elipsë pranë pronës Foto në dritaren e Object Inspector ose thjesht klikoni dy herë Imazhi... Dritarja e Redaktuesit të Fotografive do të hapet para jush (Fig. 4.3), e cila ju lejon të ngarkoni në pronë Fotoçdo skedar grafik (butoni Load), si dhe ruani skedarin e hapur me një emër të ri ose në një drejtori të re. Klikoni në Load për të ngarkuar skedarin grafik. Do të shihni një dritare për hapjen e një skedari grafik, të paraqitur në Fig.4.4 Ndërsa lëvizni kursorin në listën e skedarëve grafikë, dritarja e djathtë shfaq fotografitë që ato përmbajnë, dhe mbi to - numrat që karakterizojnë madhësinë e figurës. Ju mund të zgjidhni çdo lloj skedari grafik që ju nevojitet. Kujtoni që skedarët grafikë të furnizuar me Delphi mund të gjenden në direktorinë Images. Në Delphi 5 dhe 4, zakonisht ndodhet në një drejtori. \ skedarët e programit \ Common Files \ Borland Shared. Në Delphi 3, ai ndodhet në drejtori. \ program skedarët \ Borland \ Delphi 3, dhe në Delphi 1 është në drejtorinë Delphi 16. Pasi të keni shkarkuar skedarin, klikoni OK në dritaren e Redaktuesit të Fotografive dhe në komponentin tuaj Imazhi do të shfaqet fotografia që keni zgjedhur. Ju mund të hapni aplikacionin tuaj dhe ta admironi atë. Sidoqoftë, tashmë mund ta shihni figurën pa e drejtuar aplikacionin.

Kur ngarkoni një imazh nga një skedar në një komponent gjatë procesit të projektimit Imazhi, jo vetëm e shfaq, por edhe e ruan në aplikacion. Kjo ju jep mundësinë për të dërguar aplikacionin tuaj pa një skedar grafik të veçantë. Megjithatë, siç do të shohim më vonë, në Imazhi Skedarët grafikë të jashtëm mund të ngarkohen gjithashtu gjatë ekzekutimit të aplikacionit.

Le të kthehemi te shqyrtimi i vetive të komponentit. Imazhi.

Nëse vendosni pronën Madhësia automatike v e vërtetë, pastaj madhësia e komponentit Imazhi automatikisht do të përshtatet me madhësinë e figurës së vendosur në të. Nëse prona Madhësia automatike instaluar në i rremë, atëherë imazhi mund të mos përshtatet në komponent, ose, anasjelltas, zona e komponentit mund të rezultojë të jetë shumë më e madhe se zona e figurës.

Një tjetër pronë është Shtrihu ju lejon të përshtatni jo komponentin me madhësinë e figurës, por figurën me madhësinë e komponentit. Instaloni Madhësia automatike v i rremë, shtrini ose zvogëloni madhësinë e komponentit Imazhi dhe instaloni Shtrihu v e vërtetë... Do të shihni që vizatimi do të zërë të gjithë zonën e komponentit, por meqenëse nuk është e vështirë të vendosni dimensionet Imazhi proporcionale me madhësinë e figurës, fotografia do të shtrembërohet. Instaloni Shtrihu v e vërtetë mund të ketë kuptim vetëm për disa modele, por jo për foto. Pronës Shtrihu nuk funksionon në imazhet e piktogrameve, të cilat nuk mund të ndryshohen përmasat.

Prona - Qendra vendosur në e vërtetë, përqendron imazhin në katror Imazhi nëse madhësia e komponentit është më e madhe se madhësia e figurës.

Le të shqyrtojmë një pronë tjetër - Transparente(transparencë). Nëse Transparente barazohet e vërtetë, pastaj imazhi në Imazhi bëhet transparent. Kjo mund të përdoret për të mbivendosur imazhet njëra mbi tjetrën. Vendosni përbërësin e dytë në formular Imazhi dhe ngarkoni një foto tjetër në të. Thjesht përpiquni të bëni një fotografi pak të mbushur me kontur. Për shembull, mund të bëni një fotografi nga ato që zakonisht vendosen në butona, për shembull, një shigjetë (skedar. \ Program skedarët \ skedarë të zakonshëm \ borland shared \ images \ buttons \ arrow1l. Bmp). Lëvizni tuajën Imazhi në mënyrë që ato të mbivendosen me njëra-tjetrën dhe në grupin e komponentëve të sipërm Transparente të barabartë e vërtetë... Do të shihni që fotografia e sipërme nuk po errëson më atë të poshtme. Një nga aplikimet e mundshme të kësaj vetie është vendosja e mbishkrimeve në foto, të bëra në formën e një matrice bit. Këto etiketa mund të bëhen duke përdorur redaktuesin e imazhit të integruar në Delphi.

Vini re se prona Transparente vepron vetëm në matricat bit. Në këtë rast, ngjyra e pikselit të poshtëm të majtë të matricës së bitit bëhet transparente (d.m.th., zëvendësohet nga ngjyra e figurës poshtë saj) si parazgjedhje.

Ne mbuluam ngarkimin e një imazhi nga një skedar gjatë procesit të projektimit. Por prona Foto gjithashtu ju lejon të organizoni lehtësisht shkëmbimin me skedarë grafikë të çdo lloji gjatë ekzekutimit të aplikacionit. Për të shpjeguar teknikën e një shkëmbimi të tillë, së pari duhet të merret në konsideratë më në detaje pasuria Foto.

Kjo veti është një objekt, i cili nga ana tjetër ka nën-veti që tregojnë për objektin grafik të ruajtur. Nëse në Foto matrica e biteve ruhet, e treguar nga vetia Foto. Bitmap... Nëse një ikonë ruhet, ajo tregohet nga vetia Foto. Ikona... Metafili i ruajtur tregohet nga prona Foto. Metafile... Së fundi, një objekt grafik i një lloji arbitrar tregohet nga vetia Foto. Grafike.

Nje objekt Foto dhe vetitë e tij Bitmap, Ikona, Metafile dhe Grafike kanë metoda të leximit dhe shkrimit të skedarëve LoadFromFile dhe SaveToFile:

procedurë LoadFromFile ( konst Emri i skedarit: varg);

procedurë SaveToFile ( konst Emri i skedarit: varg);

Për pronat Foto. Bitmap, Foto. Ikona dhe Foto. Metafile formati i skedarit duhet të korrespondojë me klasën e objektit: matricë bit, ikona, metafile. Kur lexoni një skedar në një pronë Foto. Grafike skedari duhet të jetë në formatin metafile. Dhe për vetë objektin Foto metodat e leximit dhe shkrimit përshtaten automatikisht me llojin e skedarit. Le ta shpjegojmë këtë me një shembull.

Le të ndërtojmë një aplikacion të ngjashëm me shembullin e shikimit të skedarëve grafikë të diskutuar në seksionin 4.2. Për një ndryshim, ju mund të organizoni kontrollin e tij jo me një buton Butoni dhe menunë. Vendosni një komponent në formular Imazhi... Shtrijeni atë ose vendosni pronën e tij Rreshtoni të barabartë klienti në mënyrë që të zërë të gjithë zonën e klientit të formularit. Tërhiqni komponentin e dialogut të hapur të skedarit grafik në formular OpenPictureDialog(shih seksionin 8.2 ). Vendosni edhe komponentin e menysë kryesore në formular Menuja kryesore(shih seksionin 6.1 ) dhe vendosni një seksion në të - File. Në mbajtësin për këtë seksion, shkruani operatorin

(OpenPictureDialog1. Ekzekutoni) pastaj... Foto. LoadFromFile (. Emri i skedarit);

Ky operator do të thërrasë dialogun për hapjen e një skedari grafik (shih Fig. 4.4) dhe do të ngarkojë në komponentin Imazhi 1 një imazh nga një skedar i zgjedhur nga përdoruesi (shih Figurën 4.5). Për më tepër, skedari mund të jetë i çdo lloji: matricë bit, ikonë ose metafil.

Figura 4.5 Imazhi në komponent Imazhi matrica e biteve (a) dhe piktogramet (6)



Në këtë aplikacion, metoda LoadFromFile aplikuar në Imazhi 1. Foto... Nëse do të hapen vetëm skedarët e matricës së biteve, atëherë operatori i ngarkimit të skedarit mund të zëvendësohet me

Foto. Bitmap. LoadFromFile (. Emri i skedarit);

Për piktograme, operatori mund të përdoret. Foto. Ikona. LoadFromFile (. Emri i skedarit);

dhe për metafiles, operatori. Foto. Metafile. LoadFromFile (. Emri i skedarit);

ose. Foto. Grafike. LoadFromFile (. Emri i skedarit);

Por në të gjitha këto raste, nëse formati i skedarit nuk përputhet me atë të synuar, do të ndodhë një gabim. Metoda funksionon në të njëjtën mënyrë. SaveToFile me ndryshimin që zbatohej për Foto ose te Foto. Grafike ai ruan një imazh të çdo formati në një skedar. Për shembull, nëse e plotësoni aplikacionin tuaj me një dialog SavePictureDialog(shih seksionin 8.2 ), futni seksionin Ruaj si në meny dhe vendoseni operatorin në mbajtësin e tij

SavePictureDialog1. Ekzekutoni pastaj... Foto. SaveToFile (SavePictureDialog1. Emri i skedarit);

atëherë përdoruesi do të jetë në gjendje të ruajë një imazh të çdo formati në një skedar me një emër të ri. Vetëm në këtë rast, për të shmangur konfuzionin e mëtejshëm, shtrirja e skedarit të ruajtur duhet ende të korrespondojë me formatin e imazhit të ruajtur.

Programi do të funksionojë absolutisht identikisht për imazhet e çdo formati nëse zëvendësoni operatorin e ruajtjes me

Foto. Grafike. SaveToFile (. Emri i skedarit);

duke përdorur pronën Foto. Grafike... Dhe nëse e dini formatin e ruajtur në komponent Imazhi imazhe, atëherë mund të aplikoni metodën SaveToFile ndaj pronave Foto. Bitmap, Foto. Ikona dhe Foto. Metafile.

Për të gjitha objektet e konsideruara Foto, Foto. Bitmap, Foto. Ikona dhe Foto. Metafile Përcaktohen metodat për caktimin e vlerave për objektet:

Cakto (Burimi: TPersistent);

Megjithatë, për BitMap, Ikona dhe Metafile mund të caktohen vetëm vlerat e objekteve homogjene: përkatësisht, matricat e biteve, ikona, metafiles. Një përjashtim bëhet kur përpiqeni të caktoni vlera për objekte të ndryshme EConvertError... Nje objekt Foto- universale, mund t'i caktohen vlerat e objekteve të cilësdo prej tre klasave të tjera. Dhe vlera Foto mund t'i caktohet vetëm një objekti, lloji i të cilit është i njëjtë me llojin e objektit të ruajtur në të.

Metoda Cakto mund të përdoret gjithashtu për të shkëmbyer imazhe me Clipboard. Për shembull, operatori

Cakto (Imazhi1. Foto);

do të shtojë në clipboard imazhin e ruajtur në Imazhi 1... Në mënyrë të ngjashme, operatori

aplikacioni grafik i imazhit delphi

Imazhi 1. Foto. Cakto (Clipboard);

lexoni në Imazhi 1 imazhin në kujtesën e fragmenteve. Për më tepër, mund të jetë çdo imazh apo edhe tekst.

Thjesht duhet të mbani mend kur punoni me kujtesën për ta futur në operator përdor lidhjen e modulit tuaj me modulin Clipbrd... Delphi nuk e fut automatikisht këtë lidhje.

Kthimi te vetitë e komponentit Imazhi, ne mund të vërejmë një pengesë të natyrshme në aplikacionin tonë të testimit të paraqitur në Figurën 4.5 Kur ngarkoni imazhe të ndryshme, madhësia e dritares së aplikacionit mund të jetë ose shumë e vogël, dhe më pas do të shihni vetëm një pjesë të imazhit, ose shumë të madhe, dhe më pas imazhi do të vendoset në mënyrë të shëmtuar në këndin e sipërm të majtë të formës, duke lënë shumë hapësirë ​​të bardhë. Ky disavantazh mund të eliminohet duke përdorur pronat Lartësia(lartësia) dhe Gjerësia(gjerësia) komponent Imazhi... Me pronën Madhësia automatike themeluar në e vërtetë dimensionet Imazhi vendosen automatikisht të barabarta me madhësinë e imazhit të ngarkuar. Dhe këto dimensione mund të përdoren për të ndryshuar madhësinë e formularit në përputhje me rrethanat. Për shembull, kodi i mësipërm për ngarkimin e një imazhi nga një skedar mund të zëvendësohet me sa vijon:

OpenPictureDialog1. Ekzekutoni pastaj

fillojnë... Foto. LoadFromFile (. Emri i skedarit) ;. Lartësia e klientit: = Imazhi1. Lartësia + 10 ;. Top: = Formulari1. ClientRect. Top

+ (Forma1. Lartësia e klientit - Imazh1. Lartësia) div 2 ;. Gjerësia e klientit: = Imazhi1. Gjerësia + 10 ;. Majtas: = Forma1. ClientRect. Majtas

+ (Forma1. Gjerësia e klientit - Image1. Gjerësia) div 2;

fund;

Ky kod e vendos zonën e klientit të formularit pak më të madh se komponenti. Imazhi 1, të cilat nga ana e tyre përshtaten me madhësinë e figurës për shkak të pronës Madhësia automatike... Bëni këto korrigjime në aplikacionin tuaj, ekzekutoni atë dhe do të shihni që formulari ka filluar të përshtatet automatikisht me madhësinë e imazhit të ngarkuar.

Komponenti i formës

Komponenti Forma mund t'i atribuohet vetëm me kusht mjeteve të shfaqjes së informacionit grafik, pasi ai thjesht përfaqëson forma të ndryshme gjeometrike, me hije të përshtatshme. Vetia kryesore e këtij komponenti është Forma(formë), e cila mund të marrë vlerat e mëposhtme:

Shembuj të këtyre formave janë paraqitur në Figurën 4.7.

Figura 4.7 Shembuj të komponentëve Forma


Një veçori tjetër thelbësore e një komponenti është Furçë(furçë). Kjo pronë është një objekt i llojit TBrush, e cila ka një sërë nënveti, në veçanti: ngjyra ( Furçë. Ngjyrë) dhe stili ( Furçë. Stili) plotësoni formën. Plotësoni në disa vlera Stili mund të shihni në figurën 4.7 E treta e vetive specifike të komponentit Forma - Stilolaps(stilolaps) që përcakton stilin e linjës. Kjo pronë, si prona Furçë, tashmë janë konsideruar në seksionin 4.2. ... Ju mund të gjeni informacion mbi këto karakteristika në Kapitullin 10 *.

Komponenti i grafikut

Tani merrni parasysh përbërësin Grafiku... Ky komponent ju lejon të ndërtoni grafikët dhe grafikët e ndryshëm që duken shumë mbresëlënës (Figura 4.8). Komponenti Grafiku ka shumë veti, metoda, ngjarje, kështu që nëse merren parasysh të gjitha, atëherë ky do të duhej t'i kushtonte një kapitull të tërë. Prandaj, ne do të kufizohemi në marrjen në konsideratë vetëm të karakteristikave kryesore Grafiku... Për pjesën tjetër, mund të shikoni ndihmën e integruar të Delphi, ose thjesht t'i provoni duke eksperimentuar me diagrame.

Komponenti Grafikuështë një enë objektesh Seria lloji Seria TChart- seri të dhënash me stile të ndryshme shfaqjeje. Çdo komponent mund të përfshijë disa seri. Nëse dëshironi të shfaqni një grafik, atëherë çdo seri do të korrespondojë me një kurbë në grafik. Nëse dëshironi të shfaqni grafikët, për disa lloje grafikësh është e mundur të mbivendosni disa seri të ndryshme, për të tjerët (për shembull, për grafikët me byrek) ndoshta do të duket e shëmtuar. Sidoqoftë, edhe në këtë rast, mund të vendosni për një komponent Grafiku disa seri të të dhënave të njëjta me lloje të ndryshme grafiku. Më pas, duke e aktivizuar njërën prej tyre në çdo moment, mund t'i siguroni përdoruesit një zgjedhje të llojit të grafikut që shfaq të dhënat me interes.

Vendosni një ose dy komponentë (nëse dëshironi të riprodhoni figurën 4.8). Grafiku në formular dhe shikoni vetitë e hapura në Object Inspector. Le të japim një shpjegim të disa prej tyre.

Përcakton aftësinë e përdoruesit për të lëvizur nëpër pjesën e vëzhguar të grafikut gjatë ekzekutimit duke shtypur butonin e djathtë të miut. Vlerat e mundshme: pmAsnjë - lëvizja është e ndaluar, pmHorizontale, pmVertical ose pmTë dyja - lëvizja lejohet, përkatësisht, vetëm në drejtimin horizontal, vetëm në drejtimin vertikal ose në të dy drejtimet.

Lejon përdoruesin të ndryshojë shkallën e imazhit në kohën e ekzekutimit duke prerë fragmente të një diagrami ose grafiku me kursorin e miut (në figurën 4.8 b më poshtë, tregohet momenti i shikimit të një fragmenti të grafikut i paraqitur plotësisht në figurën 4.8 a).

Specifikon titullin e grafikut.

Përcakton titullin poshtë grafikut. Asnjë si parazgjedhje. Teksti i nënshkrimit përcaktohet nga nënvetia Tekst.

Përcakton një kufi rreth grafikut.

Legjenda e grafikut është një listë simbolesh.

MarginLeft, MarginDjathtas, MarginTop, MarginBottom

Vlerat e marzhit majtas, djathtas, lart dhe poshtë.

Boshti i poshtëm, Boshti i Majtë, Boshti i Djathtë

Këto veti përcaktojnë përkatësisht karakteristikat e boshtit të poshtëm, të majtë dhe të djathtë. Vendosja e këtyre vetive ka kuptim për grafikët dhe disa lloje grafikësh.

LeftWall, BottomWall, BackWall

Këto veti përcaktojnë përkatësisht karakteristikat e skajeve të majta, të poshtme dhe të pasme të zonës së shfaqjes tre-dimensionale të grafikut (shih Fig. 4.8 a, grafiku i poshtëm).

Lista e serive të të dhënave të shfaqura në komponent.

Aktivizon ose çaktivizon shfaqjen 3D të grafikut.

Karakteristikat e ekranit 3D.

Shkalla e tredimensionalitetit (për Fig. 4.8 është trashësia e grafikut dhe gjerësia e brezave të grafikut).


Pranë shumë prej vetive të listuara në Inspektorin e Objekteve ka butona elipsësh që ju lejojnë të telefononi një ose një faqe tjetër të Redaktuesit të Diagramit - një dritare me shumë faqe që ju lejon të vendosni të gjitha vetitë e diagrameve. Thirrja e redaktuesit të diagramit është gjithashtu e mundur duke klikuar dy herë mbi komponentin Grafiku ose duke klikuar me të djathtën mbi të dhe duke zgjedhur Edit Chart nga menyja që shfaqet.

Nëse dëshironi të provoni të riprodhoni aplikacionin e paraqitur në Figurën 4.8, klikoni dy herë në komponentin e sipërm Grafiku... Ju do të çoheni në dritaren Chart Editor (Fig. 4.9) në faqen Chart, e cila ka disa skeda. Para së gjithash, do t'ju interesojë skeda Seri në të. Klikoni në butonin Shto - shtoni një seri. Do të çoheni në një dritare (Figura 4.10), në të cilën mund të zgjidhni llojin e grafikut ose grafikut. Në këtë rast, zgjidhni Pie - një grafik byrek. Duke përdorur skedën Titujt, mund të vendosni titullin e diagramit, skeda Legjenda ju lejon të vendosni parametrat për shfaqjen e legjendës së diagramit (listën e simboleve) ose madje ta fshehni atë nga ekrani, skeda Paneli përcakton pamjen e panelit në të cilën shfaqet diagrami, skeda 3D ju lejon të ndryshoni pamjen e diagramit tuaj: anim, prerje, trashësi, etj.

Kur jeni duke punuar me Redaktorin e Grafikut dhe keni zgjedhur një lloj grafiku, në komponentët Grafiku forma juaj shfaq pamjen e saj me të dhëna të kushtëzuara të futura në të (shih Fig. 4.11).

Figura 4.10 Zgjedhja e një lloji grafiku në Redaktuesin e Grafikëve


Prandaj, mund të vëzhgoni menjëherë rezultatin e aplikimit të opsioneve të ndryshme në aplikacionin tuaj, gjë që është shumë e përshtatshme.

Faqja e Serive, e cila ka gjithashtu një seri skedash, ju lejon të zgjidhni karakteristika shtesë për shfaqjen e serisë. Në veçanti, për një grafik me byrek në skedën Format, është e dobishme të aktivizoni opsionin e byrekut të rrethuar, i cili do të sigurojë që për çdo madhësi të komponentit Grafiku shfaqni një tabelë në formën e një rrethi. Në skedën Marks, butonat e grupit Style përcaktojnë se çfarë do të shkruhet në etiketat që lidhen me segmentet individuale të grafikut: Vlera - vlera, Përqindja - përqindja, Etiketa - emrat e të dhënave, etj. Në shembullin në figurën 4.8, butoni Përqindje është aktivizuar dhe skeda e Përgjithshme është vendosur në një shabllon përqindjeje për të shfaqur vetëm vlerat e numrave të plotë.

Nëse dëshironi, mund t'i shtoni këtij komponenti Grafiku një seri tjetër identike duke klikuar butonin Klon në skedën Seri të faqes Grafiku dhe më pas për këtë seri të re, klikoni butonin Ndrysho dhe zgjidhni një lloj grafiku tjetër, për shembull, Bar. Sigurisht, dy lloje të ndryshme tabelash në të njëjtën foto do të duken keq. Por mund të fikni treguesin e kësaj serie të re në skedën Seritë dhe më pas t'i siguroni përdoruesit një zgjedhje të një ose një lloji tjetër të shfaqjes së grafikut (më poshtë do të tregohet se si bëhet kjo).

Dilni nga Redaktori i Diagramit, zgjidhni komponentin e poshtëm në aplikacionin tuaj Grafiku dhe rivendosni vetitë për të duke përdorur Redaktorin e Diagramit. Në këtë rast, do t'ju duhet të specifikoni dy seri, nëse dëshironi të shfaqni dy kthesa në grafik dhe zgjidhni llojin e grafikut Line. Meqenëse po flasim për grafikë, mund të përdorni skedat Boshti dhe Muret për të përcaktuar karakteristikat e koordinatave të boshteve dhe skajet 3D të grafikut.

Kjo kompleton dizajnin e pamjes së aplikacionit. E vetmja gjë që mbetet për të bërë është të shkruani kodin që specifikon të dhënat që dëshironi të shfaqni. Për aplikimin tonë të testit, le të vendosim vetëm disa të dhëna konstante në grafikun e byrekëve dhe funksionet e sinusit dhe kosinusit në grafikë.

Për të vendosur vlerat e shfaqura, përdorni metodat e serisë Seria... Le të ndalemi vetëm në tre metoda kryesore.

Metoda Qartë fshin serinë nga të dhënat e futura më parë.

Metoda Shtoni:

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

ju lejon të shtoni një pikë të re në diagram. Parametri Vlera përputhet me vlerën e shtuar, parametrin ALetiketë- emri që do të shfaqet në diagram dhe në legjendë, AColor- ngjyrë. Parametri ALetiketë- opsionale, mund ta vendosni bosh: "".

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

ju lejon të shtoni një pikë të re në grafikun e funksionit. Parametrat AXVlera dhe AYVlera korrespondojnë me një argument dhe një funksion. Parametrat ALetiketë dhe AColor njëjtë si në metodë Shtoni.

Kështu, procedura për ngarkimin e të dhënave në shembullin tonë mund të jetë si më poshtë:

155;=251;=203;=404;

var: fjalë;

fillojnë Seria 1 bëj

fillojnë; (A1, "Dyqani 1", clYellow); (A2, "Dyqani 2", clBlu); (A3, "Dyqani 3", clRed); (A4, "Dyqani 4", clVjollcë);

fund;. Qartë ;. Qartë;

për i: = 0 te 100 bëj

fillojnë... AddXY (0.02 * Pi * i, sin (0.02 * Pi * i), "", clRed) ;. AddXY (0.02 * Pi * i, cos (0.02 * Pi * i), "", clBlue);

Nëse keni dhënë, për shembull, për të dhënat e shfaqura në një grafik, dy seri Seria 1 dhe Seria 4 tipe te ndryshme - Byrek dhe Bar, atëherë mund të prezantoni një procedurë që ndryshon llojin e grafikut me kërkesë të përdoruesit. Kjo procedurë mund të injektohet në ngjarje Ne klikim ndonjë buton, në një komandë menyje, ose, për shembull, thjesht për të trajtuar një klikim në një komponent Grafiku... Për të ngarkuar të dhënat në Seria 4 dhe për ta bërë këtë diagram të padukshëm në momentin e parë, mund të futni në fund të procedurës së mësipërme deklaratat

Cakto (Seria 1) ;. Aktiv: = false;

I pari nga këta operatorë mbishkruan të dhënat e vendosura në Seria 1, në seri Seria 4... Dhe operatori i dytë e bën serinë të padukshme Seria 4... Ndryshimi i llojit të diagramit kryhet me procedurë

Aktiv: = jo Seria 1. Aktiv;. Aktiv: = jo Seria 4. Aktiv;

Në figurën 4.8 b, mund të shihni rezultatin e kalimit të përdoruesit në një pamje tjetër të diagramit.

Artikujt kryesorë të lidhur