Komponenta za prikaz grafičnih informacij v delphi. Predstavitev na temo "Prikaz grafičnih informacij v Delphiju." Kratke informacije iz teorije

Delo z grafiko v Delphiju niso samo črte in risbe, ampak tudi tiskanje besedilni dokumenti. Zato v Delphi na delu z grafiko moraš porabiti malo časa. Delo z grafika v Delphiju vključuje dostop do platna – lastnosti komponent Canvas. Platno Delphi to je platno, ki omogoča programerju, da ima dostop do vsake njegove točke (piksla) in kot umetnik prikaže, kar je potrebno. Seveda rišite slikovno piko za slikovno piko delo z grafiko v Delphiju ni potreben, sistem Delphi zagotavlja zmogljive grafična orodja, kar programerju olajša nalogo.

Pri delu z grafiko v Delphiju ima programer na voljo oris (platno, platno - lastnost Platno Komponente Delphi), svinčnik (last Pero), čopič (lastnost čopiča) komponente ali predmeta, na katerega naj bi slikali. Pri svinčniku Pero in ščetke Čopič spremenite lahko barvo (Lastnost Color) in slog (Lastnost Style). Dostop do pisav omogoča lastnost canvas Pisava. Ta orodja vam omogočajo prikaz besedila in precej zapletenih grafov matematične in inženirske vsebine ter risb. Poleg tega delo z grafiko omogoča uporabo takih virov v Delphiju Windows kot so grafične in video datoteke.

Seveda nimajo vse komponente v Delphiju teh lastnosti. Na zavihku Dodatno nahaja se specializirana komponenta TImage, posebej zasnovan za risanje, ampak tudi lastnost Platno imajo na primer komponente, kot so ListBox, ComboBox, StringGrid, pa tudi sam obrazec, ki postavlja naše komponente! Poleg tega za tiskanje dokumentov Delphi dostopa do lastnosti Canvas predmeta, kot je tiskalnik.

Glavna lastnost takega predmeta, kot je Canvas Delphi, je Piksli vrsta TColor, to je dvodimenzionalni niz točk (pikslov), ki jih določa njihova barva. Risanje na platnu se pojavi v trenutku, ko katerikoli točki na platnu dodelimo določeno barvo. Vsakemu pikslu lahko dodelite katero koli razpoložljivo za Barva oken. Na primer izvajanje stavka

Image1.Canvas.Pixels:=clRed;

Rezultat bo risanje rdeče pike s koordinatami. Barvo piksla lahko ugotovite z inverzno dodelitvijo:

Barva:=Image1.Canvas.Pixels;

Vrsta TColor definirano kot dolgo celo število (LongInt). Njegovi štirje bajti vsebujejo informacije o razmerjih modre (B), zelene (G) in rdeče (R) barve. V šestnajstiškem sistemu izgleda takole: $00BBGGRR. Delež posamezne barve se lahko spreminja od 0 do 255. Zato je za prikaz največje rdeče točke treba dodeliti barva $000000FF.
Za standardne barve v Delphiju je definiran niz besedilnih konstant. Ogledate si ga lahko tako, da na primer odprete lastnost Barva istega obrazca v inšpektorju objektov.

Naslednja tabela vsebuje nekaj lastnosti in metod platna:

Procedura TextOut(X, Y: Integer; konst Besedilo: WideString);
Ustvari izhodni niz Besedilo začenši od (X, Y) - zgornji levi piksel besedila.
Lastnost TextWidth( var Besedilo: niz): celo število;
Vsebuje dolžino niza Besedilo v slikovnih pikah.
Lastnost TextHeight( var Besedilo: niz): celo število;
Vsebuje višino vrstice Besedilo v slikovnih pikah.
Procedure MoveTo(X, Y: Integer);
Premakne položaj na slikovno piko z naslovom (X, Y).
Procedure LineTo(X, Y: Integer);
Nariše ravno črto od točke trenutnega položaja do piksla z naslovom (X, Y). Naslov (X, Y) postane točka trenutnega položaja.
Postopek FillRect( konst Rect: TRect);
Zapolni pravokotnik Rect na platnu s trenutnim čopičem. Lahko se uporablja med drugim za brisanje dela slike na platnu.

Napišimo, samo s temi metodami platna, aplikacijo za sliko na komponentnem platnu Slika besedilo, ki je vneseno v komponento Beležka:

Prva stvar, ki jo bomo naredili, je inicializacija spremenljivk, ko se program zažene. Določiti je treba velikost risalnega območja (za to bomo ustvarili globalno spremenljivko Rect tipa TRect) in nastaviti barvo ozadja. Slika bela:

postopek TForm1.FormCreate(Pošiljatelj: TObject);
začeti
Rect.Left:=0;
Rect.Top:=0;
Rect.Right:=Image1.Width;
Rect.Bottom:=Image1.Height;
Image1.Canvas.Brush.Color:=clWhite;
konec;

Nato narišite okvir na straneh slike:

postopek TForm1.stran;
začeti
z Slika 1. Platno narediti
začeti
Premakni na (0, 0);
LineTo(Image1.Width-1, 0);
LineTo(Slika1.Širina-1, Slika1.Višina-1);
LineTo(0, Slika1.Višina-1);
LineTo(0, 0);
konec;
konec;

Poskusimo, kaj se je zgodilo. Vse deluje, le okvir se še ne prikaže. Zato dodajmo postopek strani v postopku FormCreate. Zdaj je lepo. Naprej bomo pisali preprost postopek brisanje, čiščenje slike. Poklicati ga bo treba pred kakršno koli posodobitvijo slike, sicer se bodo prejšnje in naslednje slike prekrivale.

postopek TForm1.clearing;
začeti
Image1.Canvas.FillRect(Rect); //Pravokotnik Rect je napolnjena z belo in slika je izbrisana.
konec;

Zdaj je na vrsti sam postopek izpisa besedila. Začnimo risati besedilo od točke (3, 3) - zgornjega levega kota lista, z rahlim zamikom 3 slikovnih pik. Vsaka naslednja vrstica bo zamaknjena za višino vrstice:

postopek TForm1.prn;
var i: Celo število;
začeti
z Slika 1. Platno narediti
za i:=1 do Memo1.Lines.Count narediti
TextOut(3, 3+(i-1)*TextHeight("A"), Memo1.Lines);
konec;

Zdaj je vse pripravljeno za izpis besedila. To bomo storili z uporabo dogodka OnChange:

postopek TForm1.Memo1Change(Pošiljatelj: TObject);
začeti
čiščenje;
prn;
stran;
konec;

In končno, postopek za spreminjanje velikosti pisave:

postopek TForm1.Edit1Change(Pošiljatelj: TObject);
začeti
Memo1.Font.Size:=UpDown1.Position;
Image1.Canvas.Font.Size:=UpDown1.Position;
Memo1Change(Pošiljatelj);
konec;

Ta program lahko spremenite za tiskanje besedila. Za delo s tiskalnikom morate priključiti modul Tiskalniki:

enota Enota1;

Vmesnik

uporablja
Windows, sporočila, SysUtils, različice, razredi, grafika, kontrolniki, obrazci,
Pogovorna okna, StdCtrls, Tiskalniki ;

Ko delate s tiskalnikom kot platnom, se za začetek tiskanja prikliče metoda BeginDoc, potem je dokument izpisan, tiskanje se zaključi s klicem metode EndDoc:

Printer.BeginDoc;
z Tiskalnik.Canvas narediti
začeti
... Natisni dokument ...
konec;
Printer.EndDoc;

Širina in višina tiskalniškega traku sta na voljo v lastnostih Printer.PageWidth in Printer.PageHeight. Z metodo lahko končate tiskanje na eni strani in začnete tiskati na drugi Printer.NewPage.

Seznam komponent zaslona grafične informacije

Za prikaz grafičnih informacij nudi knjižnica Delphi komponente, katerih seznam je podan v tabeli 4.1.

Tabela 4.1 Komponente prikaza grafičnih informacij Piktogram

Komponenta

Stran

Opis

Slika

Uporablja se za prikaz grafike: ikone, bitne slike in metadatoteke.


PaintBox (okno za risanje)

Uporablja se za ustvarjanje območja na obrazcu, v katerem lahko rišete.


DrawGrid (tabela risb)

Uporablja se za prikaz nebesedilnih podatkov v vrsticah in stolpcih.


Grafikon (grafi in grafi)

Komponenta spada v družino komponent TChart, ki se uporabljajo za izdelavo grafikonov in grafov.


Poleg tega lahko prikažete in vnesete grafične informacije na površini katere koli grafike za prikaz na platnu.

Platno Platno ni komponenta, zato ga strogo gledano ne bi smeli obravnavati v okviru te knjige. Ker pa imajo številne komponente, zlasti obrazci, oris in oris omogoča prikaz različnih grafičnih informacij, je vseeno priporočljivo podati nekaj začetnih informacij o orisu.

Platno je območje komponente, na katerem lahko rišete ali prikazujete dokončane slike. Vsebuje lastnosti in metode, ki močno poenostavijo grafiko Delphi. Vse kompleksne interakcije s sistemom so za uporabnika skrite, tako da lahko v Delphiju riše tudi oseba, ki ni prav nič izkušena v računalniški grafiki.

Vsaka točka orisa ima koordinate X in Y. Koordinatni sistem platna ima, tako kot drugod v Delphiju, svoj izvor v zgornjem levem kotu platna. Koordinate X narašča pri premikanju od leve proti desni, koordinata pa Y- pri premikanju od zgoraj navzdol. Koordinate se merijo v slikovnih pikah. Piksel je najmanjši element na površini dizajna, s katerim je mogoče manipulirati. Najpomembnejša lastnost piksla je njegova barva.

Platno ima lastnost Piksli. Ta lastnost je dvodimenzionalni niz, ki je odgovoren za barve platna. na primer Platno. Piksli se ujema z barvo slikovne pike 10. z leve in 20. z vrha. Matriko slikovnih pik lahko obravnavate kot katero koli lastnost: spremenite barvo tako, da slikovni piki dodelite novo vrednost, ali določite njeno barvo iz vrednosti, shranjene v njej. na primer Platno. Slikovnih pik:=0 oz Platno. Piksli:=clČrna- to je za nastavitev slikovne pike na črno.

Lastnina Piksli se lahko uporablja za risanje na platno. Poskusimo narisati slikovno piko za slikovno graf sinusoide na obris obrazca. Če želite to narediti, v obrazcu za obravnavo dogodkov OnPaint(risba) lahko vstavite naslednjo kodo:

TForm1. FormPaint(Pošiljatelj: TObject);

var,Y:resnično; // funkcijske koordinate,PY: longint; // koordinate slikovnih pik

začeti:=clBela;

za PX:=0 do ClientWidth narediti

(X je argument grafa,

:=PX*4*Pi/Širina odjemalca;:=Sin(X);

(PY - koordinata pikslov,

: =trunc (Višina odjemalca - (Y+1) *Višina odjemalca/2);

(Nastavi barvo izbranega

pixel (o svetlosti). slikovnih pik: = 0;

konec;

Zaženite to preskusno aplikacijo in videli boste rezultat, prikazan na sliki 4.1 a. Sinusni graf se je izkazal, čeprav ne zelo dober, ker je razdeljen na posamezne točke – piksle.

Platno - predmet razreda TCanvas ima veliko metod, ki vam omogočajo risanje grafov, črt, oblik z uporabo lastnosti Pero- pero. Ta lastnost je predmet, ki ima nato številne lastnosti. Eden od njih je nepremičnina, ki jo že poznate barva- barva, s katero je risba uporabljena. Druga lastnost - Premer(širina črte). Širina je določena v slikovnih pikah. Privzeta širina je 1.

Lastnina Slog določa vrsto linije. Ta lastnost ima lahko naslednje vrednosti:

Platno ima lastnost PenPos vrsta TPoint(cm .). Ta lastnost določa trenutni položaj peresa v koordinatah platna. Premikanje peresa brez risanja črte, tj. sprememba PenPos, izdelan po metodi platna Premakni na(X,Y). Tukaj ( X, Y) - koordinate točke, do katere se premakne pero. Ta trenutna točka postane izhodišče, od koder metoda LineTo(X,Y) lahko narišete črto do točke s koordinatami ( X,Y). V tem primeru se trenutna točka premakne na končno točko črte in nov klic LineTo bo narisal točko iz te nove trenutne točke.

Poskusimo s peresom narisati sinusni graf iz prejšnjega primera. V tem primeru obravnava dogodka obrazca OnPaint lahko izgleda takole:

postopek TForm1. FormPaint(Pošiljatelj: TObject);

var,Y:resnično; // funkcijske koordinate,PY: longint; // koordinate slikovnih pik

začeti: =clWhite;. Premakni na (0, ClientHeight div 2);

za PX: =0 do ClientWidth narediti

(X je argument grafa,

ustreza slikovni piki s koordinato RH):=PX*4*Pi/Širina odjemalca;:=Sin(X);

(PY - koordinata pikslov,

ustreza koordinati Y):=trunc(Višina odjemalca - (Y+1) *Višina odjemalca/2);

(Na grafu je narisana črta). VrsticaV(PX,PY);

Rezultat aplikacije v tej različici si lahko ogledate na sliki 4.1 b. Kot lahko vidite, se je kakovost grafike znatno izboljšala.

Pero lahko riše ne samo ravne črte, ampak tudi oblike. Za celoten seznam metod platna, ki uporabljajo pero, glejte Delphijevo vgrajeno pomoč. Zaenkrat bomo kot primer navedli samo enega od njih - Elipsa, ki nariše elipso ali krog. Deklarirano je kot

postopek Elipsa(X1, Y1, X2, Y2: celo število);

kje so parametri X1, X2, Y1, Y2 določiti koordinate pravokotnika, ki opisuje elipso ali krog. Na primer, operater

Elipsa (10, 40, 20, 50);

bo narisal krog s premerom 10 in koordinatami središča (15, 45).

V splošnem primeru figure niso narisane prazne, ampak izpolnjene z lastnostjo platna Čopič- krtačo. Lastnina Čopič je predmet, ki ima številne lastnosti. Lastnina barva določa barvo polnila. Lastnina Slog določa vzorec polnila (senčenje). Privzeta vrednost Slog enako bsSolid, kar pomeni trdno barvanje barva.

Pri peresu Pero Obstaja še ena lastnost, ki je še nismo upoštevali. Ta lastnost je Način(način). Privzeta vrednost Način = pmCopy. To pomeni, da so črte narisane z barvo, določeno v lastnosti barva. Možni pa so tudi drugi načini, pri katerih se ne upošteva le barva barva, temveč tudi barvo ustreznih slikovnih pik ozadja. Najbolj zanimiv od teh načinov je pmNotXor- seštevanje z ozadjem z inverznim izključujočim ALI. Če je ta način nastavljen, ponovno risanje iste figure na istem mestu na platnu odstrani predhodno narisano sliko in obnovi barve slikovnih pik, ki so bile pred prvo sliko figure.

Ta funkcija načina pmNotXor se lahko uporablja za ustvarjanje preprostih animacij. Dovolj je, da nekaj narišete, nato pa izbrišete, kar ste narisali, znova narišete nekoliko spremenjeno - in zdi se, da bo risba oživela.

Poskusite sami narediti preprosto animacijo - premikajoči se krog. Zaženite novo aplikacijo in pojdite na izvajanje vstavi oglas

X,Y: celo število;

To bo uvedlo globalne spremenljivke X in Y- koordinate trenutne slike.

V obliki dogodka OnPaint vstavite izjave

Čopič. Barva:=clWhite;:=clWhite;. Pero. Način:=pmNotXor;

Prvi od teh operaterjev nastavi barvo čopiča na belo Čopič. To pomeni, da bo vaš krog znotraj pobarvan belo. Drugi operater nastavi barvo ozadja površine obrazca na belo.

Tretji operater nastavi način pisala pmNotXor, ki vam bo omogočil, da izbrišete staro sliko, preden narišete novo.

Tudi najpreprostejša animacija potrebuje sinhronizacijo. V nasprotnem primeru bo hitrost gibanja določena s hitrostjo računalnika. Zato prenesite komponento v obrazec Časovnik- časovnik na strani Sistem. Ta komponenta je opisana v razdelku 5.7 .

Tam ga lahko gledate natančen opis. Zaenkrat nastavite njegovo lastnost Interval enak na primer 30 (to je čas osvetlitve v milisekundah, vendar v realnem času hitrost zaklopa bo daljša - glejte razdelek 5.7) in nastavite lastnost Omogočeno enaka lažno(to pomeni, da se časovnik ne bo samodejno zagnal ob zagonu aplikacije).

V obdelovalniku dogodkov te komponente OnTimer vstavite izjave

// Izbriši prejšnjo sliko. Elipsa (X-5, Y, X+5, Y-1Q);(X);

// Nariši novo sliko. Elipsa (X-5, Y, X+5, Y-10);

// Ustavi se, ko dosežeš konec obrazca

če(X >= ClientWidth-20) potem. Omogočeno: = false;

Prvi od teh operatorjev nariše krog na mestu, kjer je bil prej narisan, tj. izbriše prejšnjo sliko.

Zadnji operater ustavi sliko na robu obrazca.

Zdaj obrazcu dodajte gumb Gumb in nanj postavite operaterje v upravljalniku klikov

X: =10;: =100;. Elipsa (X-5, Y, X+5, Y-10);. Omogočeno: =true;

Prva dva operatorja določata začetne koordinate kroga. Tretji operater nariše krog na začetni položaj, četrti operater pa zažene merilnik časa.

Oddaj aplikacijo, jo zaženi, klikni na gumb. Videli boste sliko kroga, ki se premika po obliki od leve proti desni. Nato uporabite svojo domišljijo in spremenite to ne preveč zanimivo aplikacijo v nekaj bolj razburljivega.

Platno lahko prikazuje ne samo programsko ustvarjene slike, ampak tudi slike, shranjene v grafičnih datotekah. Samo platno samo nima metode za nalaganje slike iz datoteke. Zato mora biti datoteka naložena v drug grafični objekt, ki lahko sprejema informacije iz grafičnih datotek. In nato prepišite sliko iz tega predmeta na platno z uporabo metode platna Nariši. Njegov opis:

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

Tukaj so parametri X in Y določite koordinate zgornjega levega kota postavitve slike na platno, a Grafični- predmet, ki shranjuje informacije. Takšen objekt je lahko na primer objekt tipa TBitMap, namenjen shranjevanju bitnih matrik. Poglejmo, kako vse skupaj izgleda v praksi.

Odprite novo aplikacijo, povlecite komponento na obrazec OpenPictureDialog na strani Pogovorna okna (to je komponenta pogovornega okna za odpiranje grafičnih datotek - glejte razdelek 8.2 ) in gumb Gumb. Mesto OpenPictureDialog kjer koli v obrazcu, ker ta komponenta ni vizualna, in postavite gumb na dno obrazca. Dodajte to kodo svojemu upravljalniku klikov gumbov:

postopek TForm1. Button1Click(Pošiljatelj: TObject);

var: TBitMap;

// Izbira uporabnika grafično datoteko

če OpenPictureDialog1. Izvedi potem

// Ustvari objekt BitMap tipa TBitMap: =TBitMap. Ustvari;

// Prenesite sliko na platno obrazca. Risanje(10, 10, BitMap);

//Uničenje predmeta BitMap. Prost;

konec;

Ta koda ustvari začasni objekt tipa TBitMap Z imenom BitMap. Nato se pokliče pogovorno okno za odpiranje grafične datoteke OpenPictureDialog1 in če je uporabnik izbral datoteko, se ta prenese v BitMap metoda LoadFromFile. Nato uporabite metodo Nariši naložena slika se prekopira na platno v območju s koordinatami zgornjega levega kota (10,10). Po tem začasni objekt BitMap je uničeno.

Zaženite aplikacijo in kliknite njen gumb. Videli boste, da lahko naložite katero koli vrsto grafične datoteke. bmp in bo prikazan na obrisu obrazca (glej sliko 4.2 a). Grafične datoteke najdete v imeniku Slike. V Delphiju 5 in 4 se običajno nahaja v imeniku. \program files\Common Files\Borland Shared. V Delphiju 3 se nahaja v imeniku. \program files\Borland\Delphi 3, v Delphiju 1 pa v imeniku Delphi 16. V imeniku Images je zlasti podimenik \Images\Splash\16Color\, v katerem je shranjena datoteka, naložena v primeru na sl. 4.2

Ustvarili ste dobro aplikacijo za pregledovanje grafičnih datotek. Zdaj pa poskusimo videti njegovo glavno pomanjkljivost. Ne da bi zaprli aplikacijo, pojdite v drug program, na primer vrnite se v Delphi. Nato se, ne da bi tam kaj storili, vrnite v aplikacijo, ki se izvaja. Če je programsko okno, v katerega ste vstopili, popolnoma blokiralo okno vaše aplikacije, potem ko se vrnete vanj, boste videli, da je slika v oknu izginila. Če se je okno vaše aplikacije le delno prekrivalo, boste, ko se vrnete v aplikacijo, morda videli rezultat, podoben tistemu, prikazanemu na sliki 4.2 b.

Vidite, da če okno neke druge aplikacije začasno prekriva okno vaše aplikacije, potem je slika, narisana na orisu obrazca, pokvarjena. Poglejmo, kako lahko odpravimo to pomanjkljivost.

Če je bilo okno zaprto in je slika poškodovana, operacijski sistem sporoči aplikaciji, da se je nekaj spremenilo v okolju in da mora aplikacija ustrezno ukrepati. Takoj ko je potrebna posodobitev okna, se zanjo ustvari dogodek OnPaint. V obdelovalcu tega dogodka (v našem primeru dogodka forme) morate ponovno narisati sliko.

Prerisovanje je možno različne poti odvisno od aplikacije. V našem primeru bi bilo mogoče deklarirati spremenljivko BitMap(operater var BitMap: TBitMap) zunaj zgornjega postopka, tj. naredite to spremenljivko globalno tako, da jo postavite neposredno v razdelek izvajanje. Operater BitMap. prost lahko premaknete v obravnavo dogodkov obrazca OnDestroy, ki se pojavi, ko je aplikacija zaprta. Potem boste med celotnim izvajanjem vaše aplikacije imeli kopijo slike v komponenti BitMap in samo vstopiti morate v upravljalnik dogodkov OnPaint obrazec obstaja samo en operator:

Risanje(10, 10, BitMap);

Naredite to in videli boste, da se slika na obrazcu ne poslabša zaradi morebitnega prekrivanja oken.

Poleg obravnavane metode Nariši oris ima tudi metodo kopiranja CopyRect:

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

Metoda kopira navedeni parameter Vir območje slike na platnu vira slike Platno na podani parameter Cilj območje tega platna. Vrsta TRect, ki označujejo pravokotna območja Vir in Cilj, že opisano v razdelku 3.2 .

Na primer, operater

CopyRect(MyRect2, Bitna slika. Platno, MyRect1);

kopije v oris obrazca v območju MyRect2 slika z območja MyRect1 komponentno platno Bitna slika.

Metoda kopiranja CopyRect se izvaja v načinu, ki ga določa lastnost CopyMode. Privzeto ima ta lastnost vrednost cmSrcCopy, kar preprosto pomeni zamenjavo slike, ki je bila prej v območju Cilj, na kopirano sliko. Druge možne vrednosti CopyMode omogočajo kombiniranje slik, vendar njihovo obravnavanje presega obseg te knjige.

Omejili se bomo na te osnovne informacije o prikazovanju grafičnih informacij na platnu. V razdelku 3.2 podane so bile informacije o izhodu besedila v oris. Na splošno oris - kompleksen objekt, ki ima veliko več lastnosti in metod. Toda to zahteva obsežno razpravo, ki presega obseg te knjige. Naslednja knjiga v seriji Vse o Delphiju bo ta vprašanja podrobneje raziskala.

Komponenta okna, ki ima lastnost Platno- platno.

Komponente Image in PaintBox

Komponente Slika in PaintBox predstavljajo neko omejeno površino s platnom, na katero je mogoče pisati slike, kot je opisano v razdelku 4.2 . V tem primeru komponenta PaintBox, strogo gledano, ne ponuja nič novega v primerjavi z risanjem forme na platno. Risanje na PaintBox namesto oblike nima nobenih prednosti, razen morda nekaj reliefa v razporeditvi ene ali več risb v okenski coni.

Toda poleg teh zmožnosti komponenta Slika Obstajajo lastnosti, s katerimi lahko delate različne vrste grafične datoteke Podpira tri vrste datotek - bitne matrike, ikone in metadatoteke. Vse tri vrste datotek shranjujejo slike; razlika je le v načinu, kako so shranjeni v datotekah in v načinih dostopa do njih. Bitna matrika (datoteka s pripono . bmp) prikaže barvo vsake slikovne pike na sliki. V tem primeru so informacije shranjene tako, da lahko vsak računalnik prikaže sliko z ločljivostjo in številom barv, ki ustrezajo njegovi konfiguraciji.

Piktogrami (datoteke s pripono . ico) so majhne bitne matrike. Pogosto se uporabljajo za označevanje ikon aplikacij, v hitrih gumbih, v elementih menija, na različnih seznamih. Način shranjevanja slik v ikone je podoben shranjevanju informacij v bitnih matricah, vendar obstajajo tudi razlike. Zlasti ikone ni mogoče spreminjati; ostane enaka velikosti, v kateri je bila ustvarjena.

Metadatoteke ne shranjujejo zaporedja bitov, ki sestavljajo sliko, temveč informacije o tem, kako je bila slika ustvarjena. Shranjujejo zaporedja ukazov za risanje, ki jih je mogoče ponoviti pri poustvarjanju slike. Zaradi tega so takšne datoteke na splošno bolj kompaktne kot bitne matrice.

Komponenta Slika omogoča prikaz informacij v grafičnih datotekah vseh navedenih vrst. To se doseže s svojo lastnostjo Slika- vrsta predmeta TPicture.

Slika 4.3 Okno urejevalnika slik


Če se želite seznaniti s to lastnostjo, odprite novo aplikacijo in povlecite komponento na obrazec Slika. Raztegnite ga ali nastavite njegovo lastnost Poravnaj enaka alClient tako da zavzame celotno odjemalsko območje obrazca. Kliknite na gumb z elipso poleg lastnosti Slika v oknu Object Inspector ali preprosto dvokliknite na Slika. Pred vami se odpre okno Urejevalnik slik (slika 4.3), ki vam omogoča nalaganje v lastnost Slika kakšno grafično datoteko (gumb Naloži), prav tako pa shranite odprto datoteko pod novim imenom ali v novo mapo. Kliknite Naloži, da naložite grafično datoteko. Videli boste okno za odpiranje grafične datoteke, prikazano na sliki 4.4 Ko premikate kazalec na seznamu grafičnih datotek, se v desnem oknu prikažejo slike, ki jih vsebujejo, nad njimi pa številke, ki označujejo velikost slike. . Izberete lahko katero koli vrsto grafične datoteke, ki jo potrebujete. Naj vas spomnimo, da lahko najdete grafične datoteke, ki so priložene Delphiju, v imeniku Slike. V Delphiju 5 in 4 se običajno nahaja v imeniku. \program files\Common Files\Borland Shared. V Delphiju 3 se nahaja v imeniku. \program files\Borland\Delphi 3 in v Delphi 1 - v imeniku Delphi 16. Ko se datoteka naloži, kliknite V redu v oknu urejevalnika slik in v svoji komponenti Slika Prikazana bo slika, ki ste jo izbrali. Lahko zaženete svojo aplikacijo in jo občudujete. Vendar že vidite sliko, ne da bi sploh zagnali aplikacijo.

Ko ste med postopkom načrtovanja naložili sliko iz datoteke v komponento Slika, ga ne le prikaže, ampak tudi shrani v aplikacijo. To vam daje možnost, da svojo aplikacijo dostavite brez ločene grafične datoteke. Vendar, kot bomo videli kasneje, v Slika Med delovanjem aplikacije lahko naložite tudi zunanje grafične datoteke.

Vrnimo se k obravnavi lastnosti komponent Slika.

Če nastavite lastnost Samodejna velikost V prav, nato velikost komponente Slika se samodejno prilagodi velikosti slike, ki je v njej. Če premoženje Samodejna velikost nameščen v lažno, potem se slika morda ne prilega komponenti ali pa je, nasprotno, območje komponente lahko veliko večje od območja slike.

Druga nepremičnina - Raztegniti vam omogoča, da ne prilagodite komponente velikosti slike, temveč sliko velikosti komponente. Namestite Samodejna velikost V lažno, raztegnite ali zmanjšajte velikost komponente Slika in namestite Raztegniti V prav. Videli boste, da bo risba zavzela celotno površino komponente, vendar je malo verjetno, da bo realno določila dimenzije Slika natančno sorazmerno z velikostjo slike, bo slika popačena. Namestite Raztegniti V prav morda je smiselno samo za nekatere vzorce, ne pa tudi za slike. Lastnina Raztegniti ne vpliva na slike ikon, katerih velikosti ni mogoče spremeniti.

Nepremičnina - Center, nastavljena prav, centrira sliko na območje Slika, če je velikost komponente večja od velikosti slike.

Poglejmo še eno lastnost - Pregleden(preglednost). če Pregleden enako prav, nato sliko v Slika postane prozoren. To lahko uporabite za prekrivanje slik eno na drugo. Drugo komponento položite na obrazec Slika in vanj naložite drugo sliko. Samo poskusite posneti kakšno redko zapolnjeno, orisno sliko. Lahko na primer posnamete sliko med tistimi, ki so običajno na gumbih, na primer puščico (file.\program files\common files\borland shared\images\buttons\arrow1l. bmp). Premakni svojega Slika tako da se med seboj prekrivajo, in v zgornjem sestavnem sklopu Pregleden enaka prav. Videli boste, da zgornja slika ne zakriva več spodnje. Ena od možnih uporab te lastnosti je prekrivanje napisov na sliki v obliki bitne matrice. Te napise lahko naredite s programom Image Editor, vgrajenim v Delphi.

Prosimo, upoštevajte, da lastnina Pregleden vpliva samo na bitne matrike. V tem primeru je barva spodnjega levega piksla bitne matrike privzeto prozorna (t.j. zamenjana z barvo slike, ki se nahaja pod njo).

Pokrivali smo nalaganje slike iz datoteke med postopkom načrtovanja. Toda lastnina Slika Omogoča tudi enostavno organizacijo izmenjave z grafičnimi datotekami katere koli vrste med izvajanjem aplikacije. Da bi razložili tehniko takšne menjave, moramo najprej podrobneje preučiti nepremičnino Slika.

Ta lastnost je objekt, ki ima podlastnosti, ki kažejo na shranjen grafični objekt. Če v Slika bitna matrika je shranjena in označena z lastnostjo Slika. Bitna slika. Če je ikona shranjena, nanjo kaže lastnost Slika. Ikona. Shranjeno metadatoteko označuje lastnost Slika. Metafile. Končno je grafični objekt katere koli vrste označen z lastnostjo Slika. Grafični.

Predmet Slika in njegove lastnosti Bitna slika, Ikona, Metafile in Grafični imajo metode branja in pisanja datotek LoadFromFile in SaveToFile:

postopek LoadFromFile( konst Ime datoteke: vrvica);

postopek Shrani v datoteko ( konst Ime datoteke: vrvica);

Za lastnosti Slika. Bitna slika, Slika. Ikona in Slika. Metafile Format datoteke mora ustrezati objektnemu razredu: bitna matrika, ikona, metadatoteka. Pri branju datoteke v lastnost Slika. Grafični datoteka mora biti v obliki metadatoteke. In za sam predmet Slika Načini branja in pisanja se samodejno prilagodijo vrsti datoteke. Razložimo to s primerom.

Izdelajmo aplikacijo, podobno primeru ogledovanja grafičnih datotek, obravnavanem v razdelku 4.2. Za raznolikost ga lahko upravljate s čim drugim kot z gumbom Gumb, in meni. Postavite komponento na obrazec Slika. Raztegnite ga ali nastavite njegovo lastnost Poravnaj enaka alClient tako da zavzame celotno odjemalsko območje obrazca. Povlecite komponento pogovornega okna za odpiranje grafične datoteke na obrazec OpenPictureDialog(glejte poglavje 8.2 ). Na obrazec postavite tudi komponento glavnega menija Glavni meni(glejte poglavje 6.1 ) in v njem nastavite en razdelek - Datoteka. V obravnavo za ta razdelek napišite stavek

(OpenPictureDialog1.Execute) potem. Slika. LoadFromFile(.FileName);

Ta operater bo poklical pogovorno okno za odpiranje grafične datoteke (glej sliko 4.4) in jo naložil v komponento Slika1 sliko iz datoteke, ki jo izbere uporabnik (glej sliko 4.5). Poleg tega je datoteka lahko katere koli vrste: bitna matrika, ikona ali metadatoteka.

Slika 4.5 Slika v komponenti Slika bitna matrika (a) in piktogram (6)



V tej aplikaciji metoda LoadFromFile velja za Slika1. Slika. Če bodo odprte samo datoteke z bitno matriko, lahko operator za nalaganje datotek zamenjate z

Slika. Bitna slika LoadFromFile(.FileName);

Za piktograme bi lahko uporabili operator. Slika. Ikona. LoadFromFile(.FileName);

in za metadatoteke - operater. Slika. Metafile. LoadFromFile(.FileName);

oz. Slika. Grafični. LoadFromFile(.FileName);

Toda v vseh teh primerih, če se format datoteke ne ujema s predvidenim, bo prišlo do napake. Metoda deluje podobno SaveToFile z razliko, ki je veljala za Slika ali za Slika. Grafični v datoteko shrani sliko poljubne oblike. Na primer, če svojo aplikacijo razširite z pogovornim oknom SavePictureDialog(glejte poglavje 8.2 ), vnesite razdelek Shrani kot v meniju in postavite operator v njegov upravljalnik

SavePictureDialog1. Izvedi potem. Slika. SaveToFile(SavePictureDialog1. FileName);

potem bo uporabnik lahko shranil sliko poljubne oblike v datoteko z novim imenom. Samo v tem primeru mora končnica shranjene datoteke še vedno ustrezati formatu shranjene slike, da bi se izognili zmedi v prihodnosti.

Če operater shranjevanja zamenjate z, bo program deloval popolnoma enako za slike vseh formatov

Slika. Grafični. SaveToFile(.FileName);

uporaba lastnine Slika. Grafični. In če poznate format tega, kar je shranjeno v komponenti Slika slike, potem lahko uporabite metodo SaveToFile do lastnosti Slika. Bitna slika, Slika. Ikona in Slika. Metafile.

Za vse obravnavane objekte Slika, Slika. Bitna slika, Slika. Ikona in Slika. Metafile definirane so metode za dodeljevanje vrednosti objektov:

Dodeli (Vir: TPersistent);

Vendar pa za BitMap, Ikona in Metafile Vrednosti lahko dodelite samo homogenim objektom: bitnim matricam, ikonam, meta datotekam. Pri poskusu dodelitve vrednosti heterogenim predmetom pride do izjeme EConvertError. Predmet Slika- univerzalno, lahko mu dodelimo vrednosti predmetov katerega koli od ostalih treh razredov. In pomen Slika se lahko dodeli le objektu, katerega tip se ujema s tipom predmeta, ki je v njem shranjen.

Metoda Dodeli se lahko uporablja tudi za izmenjavo slik z medpomnilnikom odložišča. Na primer, operater

Dodeli(Slika1.Slika);

bo sliko, shranjeno v odložišču, shranil v odložišče Slika1. Podoben operater

grafična delphi slikovna aplikacija

Slika1. Slika. Dodeli (odložišče);

preberi noter Slika1 sliko v odložišču. Poleg tega je lahko katera koli slika in celo besedilo.

Pri delu z odložiščem se morate le spomniti, da prilepite v operaterja uporablja povezava vašega modula do modula Clipbrd. Delphi te povezave ne vstavi samodejno.

Vrnitev k lastnostim komponent Slika, lahko opazimo eno pomanjkljivost, ki je neločljivo povezana z našo testno aplikacijo, prikazano na sliki 4.5. Pri nalaganju različnih slik je lahko velikost okna aplikacije premajhna in takrat boste videli le del slike ali prevelika in potem bo slika neprivlačno postavljena v zgornji levi kot obrazca in pustila veliko praznega prostora. To pomanjkljivost je mogoče odpraviti z uporabo lastnosti Višina(višina) in Premer(širina) komponenta Slika. Z lastnino Samodejna velikost nameščen v prav dimenzije Slika se samodejno nastavijo na enako velikost kot naložena slika. In te dimenzije je mogoče uporabiti za ustrezno spreminjanje velikosti obrazca. Na primer, prejšnjo kodo za nalaganje slike iz datoteke je mogoče nadomestiti z naslednjim:

OpenPictureDialog1. Izvedi potem

začeti. Slika. LoadFromFile(.FileName); ClientHeight: = Slika1. Višina +10;. Zgoraj:=Obrazec1. ClientRect. Vrh

+ (Form1. ClientHeight - Image1. Height) div 2;. ClientWidth:=Image1. Širina+10;. Levo: = obrazec1. ClientRect. levo

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

konec;

Ta koda nastavi velikost odjemalskega območja obrazca tako, da je nekoliko večja od velikosti komponente. Slika1, ki se zaradi lastnosti prilagajajo velikosti slike Samodejna velikost. Naredite te spremembe v svoji aplikaciji, jo zaženite in videli boste, da se obrazec samodejno prilagaja velikosti naložene slike.

Komponenta oblike

Komponenta oblika le pogojno lahko uvrstimo med sredstva za prikaz grafičnih informacij, saj preprosto predstavlja različne geometrijske oblike, ustrezno senčene. Glavna lastnost te komponente je oblika(obrazec), ki ima lahko naslednje vrednosti:

Primeri teh oblik so prikazani na sliki 4.7

Slika 4.7 Primeri komponent oblika


Druga bistvena lastnost komponente je Čopič(čopič). Ta lastnost je objekt vrste TBrush, ki ima številne podlastnosti, zlasti: barvo ( Čopič. barva) in slog ( Čopič. Slog) izpolnite obliko. Polnjenje pri nekaterih vrednostih Slog lahko vidite na sliki 4.7. Tretja od specifičnih lastnosti komponente oblika - Pero(pero), ki določa slog črte. Ta lastnina je kot lastnina Čopič, so bili že obravnavani v razdelku 4.2 . Referenčne podatke o teh lastnostih najdete v 10. poglavju*.

Komponenta grafikona

Zdaj pa poglejmo komponento grafikon. Ta komponenta vam omogoča sestavljanje različnih grafikonov in grafov, ki izgledajo zelo impresivno (slika 4.8). Komponenta grafikon ima veliko lastnosti, metod, dogodkov, tako da bi morali temu posvetiti celo poglavje, če bi upoštevali vse. Zato se bomo omejili na upoštevanje le glavnih značilnosti grafikon. Ostale najdete v Delphijevi vgrajeni pomoči ali pa jih preprosto preizkusite z eksperimentiranjem z diagrami.

Komponenta grafikon je vsebnik predmetov serija vrsta TChartSeries- serije podatkov, za katere so značilni različni slogi prikaza. Vsaka komponenta lahko vključuje več serij. Če želite prikazati graf, bo vsaka serija ustrezala eni krivulji na grafu. Če želite prikazati grafikone, lahko za nekatere vrste grafikonov prekrijete več različnih serij eno na drugo, za druge (kot so tortni grafikoni) pa bo verjetno videti grdo. Vendar pa lahko tudi v tem primeru nastavite eno komponento grafikon več nizov istih podatkov z različnimi vrstami grafikonov. Nato lahko z vsakim aktiviranjem enega od njih omogočite uporabniku izbiro vrste grafikona, ki prikazuje podatke, ki ga zanimajo.

Postavite eno ali dve (če želite reproducirati sliko 4.8) komponenti grafikon na obrazcu in si oglejte lastnosti, ki se odprejo v inšpektorju objektov. Tukaj je nekaj razlag nekaterih izmed njih.

Določa, ali se lahko uporabnik pomika po opazovanem delu grafa med izvajanjem s klikom na desni gumb miške. Možne vrednosti: pmNone - drsenje je prepovedano, pmHorizontal, pmVertical ali pmBoth - drsenje je dovoljeno samo v vodoravni smeri, samo v navpični smeri ali v obe smeri.

Uporabniku omogoča spreminjanje merila slike med izvajanjem, izrezovanje fragmentov grafikona ali grafa s kazalcem miške (slika 4.8 b spodaj prikazuje trenutek ogleda fragmenta grafa, ki je v celoti predstavljen na sliki 4.8 a).

Določa naslov grafikona.

Določa oznako za grafikon. Privzeto nič. Besedilo podpisa določa podlastnost Besedilo.

Določa obrobo okoli diagrama.

Legenda diagrama je seznam simbolov.

Levi rob, Desni rob, Zgornji rob, Spodnji rob

Vrednosti levega, desnega, zgornjega in spodnjega roba.

Spodnja os, leva os, desna os

Te lastnosti določajo značilnosti spodnje, leve in desne osi. Nastavitev teh lastnosti je smiselna za grafe in nekatere vrste grafikonov.

Leva stena, spodnja stena, zadnja stena

Te lastnosti določajo značilnosti levega, spodnjega in zadnjega roba tridimenzionalnega območja prikaza grafa (glej sliko 4.8 a, spodnji graf).

Seznam nizov podatkov, prikazanih v komponenti.

Omogoči ali onemogoči prikaz 3D grafikona.

Značilnosti tridimenzionalnega prikaza.

Tridimenzionalno merilo (za sliko 4.8 je to debelina diagrama in širina trakov grafa).


Poleg številnih navedenih lastnosti v inšpektorju objektov so gumbi z elipsami, ki vam omogočajo, da pokličete eno ali drugo stran urejevalnika grafikonov - večstransko okno, ki vam omogoča nastavitev vseh lastnosti grafikonov. Urejevalnik diagramov lahko prikličete tudi z dvojnim klikom na komponento grafikon ali z desnim klikom nanj in v pojavnem meniju izberite ukaz Uredi grafikon.

Če želite poskusiti reproducirati aplikacijo, prikazano na sliki 4.8, dvokliknite zgornjo komponento grafikon. Preusmerjeni boste v okno urejevalnika grafikonov (slika 4.9) na stran grafikona, ki ima več zavihkov. Najprej vas bo zanimal zavihek Serija na njem. Kliknite na gumb Dodaj - dodajte serijo. Odprlo se bo okno (slika 4.10), v katerem lahko izberete vrsto grafikona ali grafa. V tem primeru izberite Tortni grafikon. Z zavihkom Naslovi lahko nastavite naslov grafikona, zavihek Legenda omogoča nastavitev parametrov za prikaz legende grafikona (seznama simbolov) ali pa ga v celoti odstranite z zaslona, ​​zavihek Panel določa videz plošče na na katerem je grafikon prikazan, vam zavihek 3D omogoča spreminjanje videza vašega grafikona: nagib, premik, debelino itd.

Ko delate v urejevalniku grafikonov in ste izbrali vrsto grafikona, komponente grafikon Vaš obrazec prikaže svoj videz s pogojnimi podatki, vnesenimi vanj (glejte sliko 4.11).

Slika 4.10 Izbira vrste grafikona v urejevalniku grafikonov


Zato lahko takoj vidite rezultat uporabe različnih možnosti za svojo aplikacijo, kar je zelo priročno.

Stran serije, ki ima tudi številne zavihke, vam daje možnost izbire dodatne lastnosti prikaz serije. Zlasti za tortni grafikon na zavihku Oblika je koristno omogočiti možnost Circled Pie, ki bo zagotovila, da pri kateri koli velikosti komponente, grafikon prikaz grafikona v obliki kroga. Na zavihku Oznake gumbi skupine Slog določajo, kaj bo zapisano na oznakah, ki se nanašajo na posamezne segmente grafikona: Value - vrednost, Percent - odstotki, Label - imena podatkov itd. V primeru na sliki 4.8 je gumb Odstotek omogočen, na zavihku Splošno pa je nastavljena predloga za odstotek, ki zagotavlja, da so prikazane samo celoštevilske vrednosti.

Če želite, lahko to komponento dodate grafikon drugo enako serijo tako, da kliknete gumb Kloniraj na zavihku Serije na strani Grafikon, nato pa za to novo serijo kliknete gumb Spremeni in izberete drugo vrsto grafikona, na primer Bar. Seveda dva različni tipi diagrami na eni sliki bodo videti slabo. Lahko pa izklopite indikator za to novo serijo na zavihku Serije in nato dovolite uporabniku, da izbere eno ali drugo vrsto prikaza grafikona (spodaj bomo pokazali, kako se to naredi).

Zapustite urejevalnik diagramov, izberite spodnjo komponento v svoji aplikaciji grafikon in ponovite nastavitev lastnosti zanj z urejevalnikom diagramov. V tem primeru boste morali določiti dve seriji, če želite na grafu prikazati dve krivulji, in izbrati vrsto črtnega grafikona. Ker govorimo o grafih, lahko uporabite zavihka Osi in Stene, da določite koordinatne značilnosti osi in tridimenzionalnih robov grafa.

To je to za oblikovanje videz aplikacija se konča. Vse kar ostane je, da napišete kodo, ki določa podatke, ki jih želite prikazati. Za testno aplikacijo samo nastavimo nekaj konstantnih podatkov v tortnem grafikonu ter funkciji sinus in kosinus v grafih.

Za nastavitev prikazanih vrednosti morate uporabiti serijske metode serija. Osredotočimo se le na tri glavne metode.

Metoda jasno počisti vrsto predhodno vnesenih podatkov.

Metoda Dodaj:

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

omogoča dodajanje nove točke v diagram. Parameter AVrednost ustreza dodani vrednosti, parameter ALabel- ime, ki bo prikazano na diagramu in v legendi, Abarva- barva. Parameter ALabel- neobvezno, lahko je prazno: "".

Metoda DodajXY:(Const AXVrednost, AYVrednost: dvojna; ALabel: niz; AColor: TColor)

omogoča dodajanje nove točke na funkcijski graf. Opcije AXVrednost in AYVrednost ustrezajo argumentu in funkciji. Opcije ALabel in Abarva enako kot pri metodi Dodaj.

Tako bi lahko postopek nalaganja podatkov v našem primeru izgledal takole:

155;=251;=203;=404;

var: beseda;

začeti serija1 narediti

začeti;(A1, "Delavnica 1", clRumena);(A2, "Delavnica 2", clModra);(A3, "Delavnica 3", clRdeča);(A4, "Delavnica 4", clVijolična);

konec;. Jasno;. jasno;

za i: =0 do 100 narediti

začeti. AddXY (0,02*Pi*i, sin (0,02*Pi*i), "", clRed);. AddXY (0,02*Pi*i, cos (0,02*Pi*i), "", clBlue);

Če imate, na primer, glede na podatke, prikazane v grafikonu, dve seriji serija1 in serija4 različni tipi - pita in Bar, potem lahko uvedete postopek, ki spremeni vrsto diagrama glede na zahtevo uporabnika. Ta postopek je mogoče vnesti v dogodek OnClick kakšen gumb, menijski ukaz ali na primer preprosto obdelavo klika na komponento grafikon. Za nalaganje podatkov v serija4 in naredite ta diagram neviden v prvem trenutku, lahko vstavite operatorje na koncu predhodno podanega postopka

Dodeli (serija1); Aktivno: =false;

Prvi od teh operaterjev prepiše vstavljene podatke serija1, v seriji serija4. In drugi operater naredi niz neviden serija4. Spreminjanje tipa diagrama poteka po postopku

Aktivno: = ne serija1. Aktiven;. Aktivno: = ne serija4. Aktiven;

Na sliki 4.8 b lahko vidite rezultat uporabnikovega preklopa na drug pogled diagrama.

LABORATORIJSKO DELO

ZADEVA: « Grafika vDelphi– konstrukcija najenostavnejših
geometrijske oblike"

Kratke informacije iz teorije

Delphi ponuja razvijalcu tri načine za prikaz grafike:

    risanje med izvajanjem programa

    uporaba vnaprej ustvarjene grafike

    ustvarjanje slik z uporabo grafičnih komponent

Za gradnjo grafov so bili ustvarjeni posebni razredi, ki ponujajo orodja in metode za risanje: orodja so opisana v treh razredih - Tfont, Tpen, Tbrush; Območje risanja in metode zagotavlja razred Tcanvas.

RazredTfont– določa značilnosti pisave, ki se uporablja za prikaz besedila na platnu. Lastnosti razreda so opisane v razdelku »Osnovne lastnosti, ki so na voljo za večino komponent«.

RazredTpen– določa lastnosti peresa (svinčnika), s katerim se rišejo črte.

Lastnosti razred Tpen:

barva:Tcolor – barva črte (privzeto – črna)

Premer:integer – debelina črte v slikovnih pikah;

Slog = (psSolid, psDash, psDot, psdashDot, psClear) – določa slog črte (polna, črtkana, pikčasta, črtkano-pikčasta, nevidna)

RazredTbrush– nastavi lastnosti čopiča, ki barva površino slike.

Lastnosti razred Tbrush:

barva:Tcolor – barva čopiča (privzeto – bela)

Slog– vzorec čopiča, lahko zavzame naslednje vrednosti:

BsSolid – enobarvna barva

BsClear – pomanjkanje senčenja

BsVertical – navpične črte

BsBdiagonal – desne diagonalne črte

BsDiagCross – poševna celica

BsHorizontal – vodoravne črte

BsFdiagonal – leve diagonalne črte

BsCross – kletka

RazredTcanvas– določi površino, na katero se postavi izdelana slika, in orodja, s katerimi se slika ustvari: pisava, svinčnik, čopič.

Kot delovno območje(platno, »platno«), je privzeto uporabljeno celotno odjemalsko območje obrazca (brez glave, glavnega menija in drsnih vrstic obrazca), vendar lahko znotraj obrazca dodelite manjša delovna območja s komponentami PaintBox oz Slika. Izhodišče koordinate platna je zgornji levi kot delovnega območja, širina delovnega območja je določena z lastnostjo ClientWidth, višina – last ClientHeight.

Lastnosti razred Tcanvas:

Platno:Tcanvas – določa območje risanja

Čopič:Tbrush – čopič za slikanje zaprtih oblik

Pisava:Tfont – pisava za prikaz besedila na platnu

Pero:Tpen – svinčnik (pisalo) za risanje

PenPos:Tpoint – trenutni položaj nevidnega kazalca na platnu

Komentiraj : Vrsta Tpoint – definirana na naslednji način:

Vrsta Point = zapis

slikovne pike: Tcolor - nastavi barve pikslov platna, X, Y - koordinate pikslov. Lastnost pikslov je primerna za risanje grafov z uporabo točk izbrane barve.

Glavne metode razreda TCanvas

    postopek Premakni na(x,y:celo število); - premakne pero brez risanja črte do točke s koordinatami (x, y).

    Postopek LineTo(x,y:celo število); - nariše črto od trenutne točke do točke s koordinatami (x, y).

Primer : Narišite diagonalno modro črto na obliki od zgornjega levega kota oblike do spodnjega desnega kota.

Pen.color:= clblue;

Premakni na (0,0); LineTo(ClientWidth, ClientHeight);

    postopek Pravokotnik(x1,y1,x2,y2:celo število); - nariše pravokotnik: x1,y1 – koordinate zgornjega levega kota; x2, y2 sta koordinati spodnjega desnega kota.

Primer : na sredino oblike narišite rumeno osenčen kvadrat s stranico 60 slikovnih pik.

var Xc,Yc: celo število; //

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.color:=clyellow;

Platno.pravokotnik(xc-30,Yc-30,xc+30,Yc+30);

    postopek Elipsa(x1,y1,x2,y2:celo število); - nariše elipso, vpisano v pravokotnik z navedenimi koordinatami.

Primer : nariši elipso, vpisano v komponento PaintBox.

PaintBox1.Canvas.Pen.Width:=4; //širina črte = 4 slikovne pike

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

    postopek Poligon(); - nariše sklenjen poligon, določen z nizom koordinat.

Primer : narišite zapolnjen romb, ki povezuje sredine stranic oblike

var Xc,Yc:celo število; // koordinate središča območja odjemalca obrazca

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.Color:=Rgb(275,140,70); // oranžna barva senčenje

Canvas.Polygon();

konec;

    Postopek Lok(x1,y1,x2,y2,x3,y3,x4,y4:celo število); - prikaže lok elipse, ki je omejen s pravokotnikom (x1, y1, x2, y2). Lok je prikazan od točke s koordinatami (x3,y3) do točke s koordinatami (x4,y4) proti v smeri urinega kazalca.

Primer : narišite lok elipse, ki povezuje sredino zgornje strani komponente
PaintBox s sredino desne strani.

Procedure Tform1.Button1Click(Sender:Object);

var X3,y3,x4,y4: Celo število;

S PaintBox1 do

Canvas.Pen.Color:= clWhite;

Platno.Pen.Width:= 3;

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

X3:= ClientWidth div 2;

X4:= Širina odjemalca;

Y4:= ClientHeight div 2;

Canvas.Pen.Color:= clMaroon;

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

Konec;

    postopek Akord(x1,y1,x2,y2,x3,y3,x4,y4:celo število); - nariše tetivo - premico, ki povezuje 2 točki elipse: točko s koordinatami (x3, y3) s točko (x4, y4).

Primer : Zamenjajte metodo Chord v podanem primeru za metodo ARC in pridobite naslednji rezultat.

    postopek pita(x1,y1,x2,y2,x3,y3,x4,y4:celo število); - nariše odsek elipse, ki povezuje središče elipse s koordinatama (x3,y3) in (x4,y4).

Primer : V primeru, danem za metodo ARC, si zamislite metodo PIE in dobite ta rezultat.

    postopek TextOut(x,y:celo število;Besedilo:niz); - izpiše niz, posredovan v parametru Text, v pravokotnik, katerega zgornji levi kot je določen s koordinatama x, y. Lastnosti pisave nastavi orodje Font.

Primer : na dnu obrazca zapišite ime izrisanega grafa.

Canvas.Font.Height:=20 ; //višina znaka 20 slikovnih pik

Canvas.Font.Color:=clblue;

Canvas.TextOut(10, ClientHeight-24, 'graf funkcije SIN(X)');

Grafične komponente

Delphi ponuja številne že pripravljene komponente, ki vam omogočajo izboljšave Uporabniški vmesnik. Te komponente se nahajajo na strani Dodatno in Sistem palete komponent.

KomponentaSlika(RazredTimage) – ustvarjen za prikaz grafičnih slik, shranjenih v zunanjih datotekah s končnicami:

    Ico (ikona, piktogram);

    bmp ( rastrska slika, bitna slika);

    Wmf, .emf (metadatoteka);

    Jpg, .jpeg (JPEG stisnjena slika).

Osnovno lastnosti :

Samodejna velikost:boolean – kdaj prav komponenta prilagodi svoje dimenzije dimenzijam naložene slike; privzeto je napačno.

Raztegniti:boolean – če je res, naložena vrednost zavzema celotno območje komponente; privzeto je napačno.

Platno:Tcanvas – uporablja se za risanje znotraj komponente med izvajanjem programa.

Slika:Tpicture - Določa sliko, ki je postavljena v komponento.

Osnovno metode razred Tslika:

Postopek LoadFromFile(Ime datoteke: niz); - naloži sliko iz datoteke z imenom Filename v komponento.

Postopek SaveToFile(Ime datoteke: niz); - shrani sliko iz komponente v datoteko z imenom Filename.

KomponentaPaintBox - določa pravokotno območje risanja. Glavna lastnina je Platno, so na voljo vse metode razreda Tcanvas, nima neodvisnih lastnosti.

Primer : narišite rumeno elipso, vpisano v komponento PaintBox1.

Procedure Tform1Button1Click(sender:Tobject);

S PaintBox1.Canvas do

Brush.Color:=clyellow;

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

konec;

KomponentaBitBtn rastrski gumb

Gumb BitBtn, za razliko od standardnega, lahko poleg naslova (Caption) vsebuje sliko, ki jo določa lastnost Glif. Obstaja nabor standardnih gumbov BitBtn, z vnaprej določenimi lastnostmi (z določeno sliko, napisom in namenom) - vrsto standardnega gumba izberemo preko lastnosti prijazna. Vrsta=(bkCustom, bkAbort,bkCancel, bkClose …)

Naloga št. 1

Ustvarite aplikacijo, ki vsebuje glavna oblika dve komponenti slike in 4 gumbi ("Naloži sliko", "Izdelaj geometrijski lik", "Spremeni barvo", "Izhod") in vam omogoča, da:

a) naložite uporabniško izbrano grafično sliko v komponento Image1, tako da slika zavzame celotno območje komponente Image.

b) pod komponento Image1 prikaži napis »To je slika iz datoteke.

(za kakršne koli meritve velikosti in položaja komponenteSlika1 napis naj
ki se nahaja strogo pod komponento).

c) znotraj komponente Slika2 narišite geometrijski lik: zapolnjen segment elipse, ki povezuje sredino komponente Slike s sredinama spodnje in desne strani komponente Slike.

(za vsako spremembo velikosti in položaja komponenteSlika2 mora biti slika pravilno sestavljena, tj. v skladu s specifikacijo glede komponenteSlika2)

d) spremenite barvo črte figure, narisane v Image2, na zahtevo uporabnika s komponento ColorDialog.

Naloga št. 2

Ustvarite aplikacijo, ki vam omogoča, da naključno postavite več oznak (na primer besedo "Hura!") v komponento slike. Za izvedbo tega uporabite generator naključnih števil Randomize in funkcijo Random.

Mere slikovne komponente, besedo, prikazano na sliki, in število besed mora vnesti uporabnik.

Naloga št. 3

Ustvarite aplikacijo, ki vam omogoča, da izberete ime geometrijske oblike iz ListBox in narišete izbrano obliko v komponenti Slika. Barva oblike se izbere iz komponente RadioGroup.

Naloga št. 4

Komponento PaintBox1 razdelite na 4 enake dele, vsak del pobarvajte z drugo barvo, na primer: modro, rumeno, zeleno, rdečo.

Poleg vsakega vogala PaintBox1 zapišite koordinate tega vogala (glede na izvor obrazca, na katerem se nahaja komponenta PaintBox1).

Naloga št. 5

Z

izberite vrsto oblike, ki bo narisana iz komponente Radiogroup1, barvo polnila iz komponente Radiogroup2 in narišite izbrano obliko v komponenti Image.

Naloga št. 6

Ustvarite aplikacijo, ki uporabniku omogoča nastavitev dimenzij komponente PaintBox1 (v slikovnih pikah).

Komponento PaintBox1 razdelite na 2 enaka dela, znotraj vsakega dela narišite elipso, zapolnjeno z barvo, ki jo je uporabnik izbral v ColorDialogu.

Naloga št. 7

Z Ustvarite aplikacijo, ki vam omogoča:

izberite ime geometrijske oblike iz ListBoxa in narišite izbrano obliko v komponenti Slika. Oblika mora biti zapolnjena z barvo, ki jo izbere uporabnik v komponenti ColorDialog, če je v komponenti RadioGroup izbrana možnost Da.

Naloga št. 8

Ustvarite aplikacijo, ki uporabniku omogoča nastavitev dimenzij komponente PaintBox1 (v slikovnih pikah).

Komponento PaintBox1 razdelite na 4 enake dele, znotraj vsakega dela narišite drugo geometrijsko obliko (elipsa, romb, trikotnik in pravokotnik). Barvo vsake oblike izbere uporabnik v ColorGridu.

Naloga št. 9

izberite ime geometrijske oblike s seznama
oblike (elipsa, romb, pravokotnik) in narišemo
izbrano obliko v komponenti Slika. Lokacija
oblike v komponenti Slika (I četrtina, II četrtina,

III ali IV četrtina) in izbrana je barva figure
iz komponent RadioGroup.

Naloga št. 10

Ustvarite aplikacijo, ki uporabniku omogoča nastavitev dimenzij komponente PaintBox1 (v slikovnih pikah).

Poskrbite, da stranska velikost ne sme biti besedilo, ne sme biti negativno število in ne sme preseči manjša velikost obrazci.

Komponento PaintBox1 razdelite na 4 enake dele, znotraj vsakega dela narišite geometrijsko obliko, ki jo uporabnik izbere v Comboboxu (elipsa, romb, trikotnik in pravokotnik). Barvo figure izbere uporabnik v ColorBoxu.

Naloga št. 11

Ustvarite aplikacijo, ki vam omogoča:

iz komponente Radiogroup izberite položaj risbe

v komponenti Slika pravokotnega trikotnika nastavite
barva senčenja figure ali barva obrisa, odvisno od
omogočanje gumbov potrditvenega polja. Izberite barvo prek
Komponenta ColorGrid.

Naloga št. 12

Ustvarite aplikacijo, ki uporabniku omogoča nastavitev dimenzij komponente PaintBox1 (v slikovnih pikah).

Zagotovite, da stranska velikost ne sme biti besedilo, ne sme biti negativno število in ne sme presegati manjše velikosti obrazca.

Komponento PaintBox1 razdelite na 2 enaka dela, znotraj enega od delov narišite geometrijsko obliko, ki jo uporabnik izbere v Comboboxu (elipsa, romb, trikotnik in pravokotnik). Barvo figure izbere uporabnik v ColorBoxu.

Na primer, barvo obrazca lahko spremenite na naslednji način:

form1.Color:= ColorBox1.Colors;

Naloga št. 13

Ustvarite aplikacijo, ki vam omogoča:

a) na sredino lika narišemo kvadrat (velikost stranice kvadrata vnese uporabnik). Zagotovite, da stranska velikost ne sme biti besedilo, ne sme biti negativno število in ne sme presegati manjše velikosti obrazca.

b) razdelite kvadrat na eno diagonalo ali dve, odvisno od vključitve gumbov potrditvenega polja, in pobarvajte vsak nastali trikotnik z drugo barvo. Barvo izbira uporabnik.

Naloga št. 14

Ustvarite aplikacijo, ki uporabniku omogoča nastavitev dimenzij komponente PaintBox1 (v slikovnih pikah).

Zagotovite, da stranska velikost ne sme biti besedilo, ne sme biti negativno število in ne sme presegati manjše velikosti obrazca.

Komponento PaintBox1 razdelite na 2 enaka dela, znotraj enega dela narišite romb, znotraj drugega pa poljuben trikotnik. Barvo figure izbere uporabnik v ColorBoxu.

Na primer, barvo obrazca lahko spremenite na naslednji način:

form1.Color:= ColorBox1.Colors;

Naloga št. 15

Ustvarite aplikacijo, ki vam omogoča:

a) vodoravno in navpično nastavite dimenzije komponente Slike, da bodo enake in enake številu, ki ga uporabnik vnese s tipkovnice;

(podajte, da stranska velikost ne sme biti besedilo, ne sme biti negativno število in ne sme presegati manjše velikosti obrazca)

b) komponento Slika razdelite na 4 enake kvadrate z dvema modrima črtama;

c) znotraj vsakega nastalega kvadrata narišite vanj včrtan krog (uporabnik lahko izbere barvo krogov v pogovornem oknu za izbiro barve).

Naloga št. 16

Ustvarite aplikacijo, ki uporabniku omogoča nastavitev dimenzij komponente PaintBox1 (v slikovnih pikah).

Zagotovite, da stranska velikost ne sme biti besedilo, ne sme biti negativno število in ne sme presegati manjše velikosti obrazca.

Komponento PaintBox1 razdelite na 9 enake dele in izpolnite vsak nastali pravokotnik šahovnice. Barvo polnila izbere uporabnik v ColorBoxu.

Na primer, barvo obrazca lahko spremenite na naslednji način:

form1.Color:= ColorBox1.Colors;

Naloga št. 17

Na obrazec postavite dve komponenti slike in štiri gumbe: Barva črte, Barva polnila, V redu in Izhod; in komponento Uredi.

Ko kliknete gumb OK, se na sliki 1 nariše kvadrat s stranico X, na sliki 2 pa pravokotni trikotnik z enakimi kraki, od katerih ima vsaka dolžino X.

Oglišče trikotnika sovpada z izhodiščem slike 2. Eno od oglišč kvadrata sovpada z izhodiščem slike 1.

Gumb OK postane na voljo šele, ko izberete barvo črte in barvo polnila za risanje oblike.

X – izbere naključno s funkcijo Random in vrednost X mora biti prikazana v komponenti za urejanje.

Naloga št. 18

Ustvarite aplikacijo, ki uporabniku omogoča nastavitev dimenzij komponente PaintBox1 (v slikovnih pikah).

Komponento PaintBox1 razdelite na 4 enake dele, znotraj uporabniško izbranega dela naj se zgradi zapolnjen krog, katerega velikost določi uporabnik. Uporabnik izbere barvo polnila v ColorBoxu.

Na primer, barvo obrazca lahko spremenite na naslednji način:

form1.Color:= ColorBox1.Colors;


“Prikaz grafičnih informacij v Delphiju” Oris teme: 1.C S pppp ooooo ssss ooooo bbbb yyyy in in yyyy vvvv ooooo dddd aaaa yy g rrrrr aaaa ffff iii hhhh eee ssss kkkk ooooo yyyy nnnn ffff ooooo rrrrr mmmm ahhh tskst iiiiii iiiiii in iv in D D D D eeee llll pppp hhhh iiii O O tttt ooo bbbb rrrrr aaaa zhzhzh eee nnnn iiii eee k k k aaaa rrrrr tttt iiii nnnnn ooooo kkkk O O tttt ooooo bbbb rrrrr aaa zhzhzh ee e nnnnn iiiiii eee g g y g eee ooooo mmmm eee ttt rrrr iiii hhchh eee ssss kkkk iiii xxxxx ffff iiii yyyy uuuu rrrrr P Pooooo ssss ttt rrrrr ooooo eee nnnn iiii eee yy g g rrrrr aaaa ffff iiii kkkk ooooo vvvv i i i in d d d iiiiii aaaa yyyy rr rrr aaaa mmmm mmmm....


1. Metode za prikaz grafičnih informacij. V Delphiju obstaja več načinov za prikaz grafičnih informacij: Izhod vnaprej pripravljenih slik (komponente slike, oblike); P Izdelava grafov in diagramov (komponenta grafikona itd.); F Slikanje programsko(Platno predmet).


2. Prikaz 2. Prikaz slik. Prikaz slik z uporabo komponente IMAGE, ki smo jo preučili v LLC DDDD DDDD LLC Yiyy in in in ZZZZ P P P PRRRDDDDDDDDDDDDDDD IIII XXXX T T T T T T T T T T T T T T T T T T T T E M M M .... Tukaj bomo obravnavali primer najpreprostejše animacije, ki periodično spreminja prikazano sliko v komponentah slike . PPPP eee rrrrr eee yyyye nnnn aaaaaaaaaaaaaaaaaaaaaaaa






3.Prikaz 3.Prikaz geometrijskih likov. IN Iz več komponent Shape lahko ustvarite preproste risbe. P S programskim spreminjanjem položaja (.Left,.Top), velikosti (.Width,.Height) in barve (Brush.Color) komponent Shape v risbi lahko implementirate elemente najpreprostejše animacije. R R R R aaaa ssssssss mmmm ooooh tttt rrrrr eee tttt yee p p p p rrrrr iii mmmm eee rrrrr....


4. Konstrukcija 4. Konstrukcija grafov in diagramov. Diagrami so zasnovani za bolj vizualno predstavitev numeričnih nizov podatkov, njihov vizualni prikaz in analizo. PPPP rrrrr iiii mmmm eee rrrrr.... Za ustvarjanje grafikonov v Delphiju obstaja več komponent, ena od njih je komponenta Grafikon (razdelek TeeChart Std).










Grafi in diagrami. Podatki, ki jih je treba prikazati, se običajno posredujejo v grafikon programsko, na primer: Series1.Clear; (počisti niz) za i:=1 do N do Series1.addxy(i, A[i], clGreen); Vrednost na osi X Vrednost na osi Y Oznaka osi X Barva podatkov na grafikonu PP aaaa ssssssssss mmmm ooooo tttt rrrrr eee tttt yee p p p p prrrr iiii mmmm eee rrrrr p p p poooo ssss ttt rrrrr ooooo eee nnnn iiiiii jayyy yyyy rrrrr aaaa ffff iii kkkk aaaa f f f f uuuu nnnn kkkk tsstst iiiiii y y y y = = = = S S S S iiii nnnn ((((xxxx))))


Naprej: Laboratorijsko delo ““““ OOOO tttt ooooo bbbb rrrrr aaaa zhzhzh eee nnnn iiii eee k k k k aaaa rrrrr tttt iiii nnnn ooooo kkkk i i i i yyyy eee ooooo mmmm eee tttt rrrrr iiii hchchh eee ssss kkkk iiii xxxx ffff iiii yyyy uuuu rrrrr in in in xxxx a a a a a nnnn iiii mmmm aaaa tsstst iiii yayayaya """"...Naloga: 1) Razvijte aplikacijo za izvajanje enostavne animacije z občasnim spreminjanjem prikazane slike v komponentah slike. (Število slik je najmanj tri, slike izberite sami).




Naprej: Laboratorijske vaje ““““ PPPP oooo ssss tttt rrrrr ooooo eee nnnn iiii eee yy g rrrrr aaaa ffff iiii kkkk ooooo vvvv i i i i d d d iiii aaaa yyyy rrrrr aaaa mmmm mmmm """". ..Naloga : 1)M spremenite aplikacijo od laboratorijsko delo 9 (Prikaz podatkov v tabeli). Dodajte možnost prikaza nekaterih podatkov iz tabele v histogramu ali tortnem grafikonu. 2) Zgradite graf dane funkcije.

Diapozitiv 2

“Prikaz grafičnih informacij v Delphiju” Oris teme: Metode za prikazovanje grafičnih informacij v Delphiju. Prikaz slik. Prikaz geometrijskih oblik. Konstrukcija grafov in diagramov.

Diapozitiv 3

1. Metode za prikaz grafičnih informacij. V Delphiju obstaja več načinov za prikaz grafičnih informacij: Izhod vnaprej pripravljenih slik (komponente slike, oblike); Izdelava grafov in diagramov (komponenta grafikona itd.); Programsko generiranje slik (predmet Canvas).

Diapozitiv 4

Prikaz slik. O prikazovanju slik z uporabo komponente Image smo razpravljali v eni od prejšnjih tem. Tukaj si bomo ogledali primer implementacije preproste animacije z občasnim spreminjanjem prikazane slike v komponentah Image. Pojdi na primer.

Diapozitiv 5

Prikaz geometrijskih oblik. Prikaz preprostih geometrijskih oblik na obrazcu omogoča komponenta Oblika.

Diapozitiv 6

Prikaz geometrijskih oblik. Osnovne lastnosti komponente Shape:

Diapozitiv 7

Prikaz geometrijskih oblik. Ustvarite lahko preproste modele iz več komponent Shape. S programskim spreminjanjem položaja (.Left, .Top), velikosti (.Width, .Height) in barve (Brush.Color) komponent Shape v risbi lahko implementirate elemente najpreprostejše animacije. Razmislite o primeru.

Diapozitiv 8

Konstrukcija grafov in diagramov. Diagrami so zasnovani za bolj vizualno predstavitev numeričnih nizov podatkov, njihov vizualni prikaz in analizo. Primer. V Delphiju obstaja več komponent za ustvarjanje grafikonov, ena od njih je komponenta Chart (razdelek TeeChart Std).

Diapozitiv 9

Konstrukcija grafov in diagramov. Pogled na komponento Chart po namestitvi na obrazec:

Diapozitiv 10

Konstrukcija grafov in diagramov. Poleg “Inšpektorja objektov” lahko dostop do lastnosti komponente Grafikon pridobite tako, da odprete posebno pogovorno okno (desni gumb na komponenti \ Uredi grafikon ...) Dodaj niz podatkov Spremenite vrsto grafikona

Diapozitiv 11

Konstrukcija grafov in diagramov. Izbira vrste grafikona:

Diapozitiv 12

Konstrukcija grafov in diagramov. Nastavitev lastnosti za koordinatne osi (Axis):

Diapozitiv 13

Konstrukcija grafov in diagramov. Podatki, ki jih je treba prikazati, se običajno posredujejo v grafikon programsko, na primer: Series1.Clear; (počisti niz) za i:=1 do N do Series1.addxy(i, A[i], ‘’, clGreen); Vrednost na osi X Vrednost na osi Y Oznaka osi X Barva podatkov na grafikonu Razmislite o primeru risanja funkcije y = Sin(x)

Diapozitiv 14

Naprej: Laboratorijsko delo št. 13.1. "Prikaz slik in geometrijskih oblik, njihova animacija." Naloga: 1) Razviti aplikacijo za implementacijo preproste animacije z občasnim spreminjanjem prikazane slike v komponentah Image. (Število slik je najmanj tri, slike izberite sami).

Diapozitiv 15

Naloga: 2) Izmislite si in narišite sliko s komponentami oblike. S programskim spreminjanjem položaja, velikosti ali barve komponent Shape v risbi lahko implementirate elemente preproste animacije.

Diapozitiv 16

Naprej: Laboratorijsko delo št. 12.2. "Gradnja grafov in diagramov." Naloga: Spremenite aplikacijo iz laboratorijske vaje št. 9 (Prikaz podatkov v tabeli). Dodajte možnost prikaza nekaterih podatkov iz tabele v histogramu ali tortnem grafikonu. 2) Zgradite graf dane funkcije.

Ogled vseh diapozitivov