Komponenter for visning av grafisk informasjon. Presentasjon om emnet "Vise grafisk informasjon i Delphi." Kort informasjon fra teorien

For å vise grafisk informasjon, tilbyr Delphi-biblioteket komponenter, listen over disse er gitt i tabellen. 6.

Tabell 6

Komponenter for visning av grafisk informasjon

Komponent Side Beskrivelse
Bilde Ytterligere Brukes til å vise grafikk
PaintBox (vindu for tegning) System Brukes til å lage et område på skjemaet der du kan tegne
DrawGrid (tabell over tegninger) Ytterligere Brukes til å vise ikke-tekstdata i rader og kolonner
Diagram (diagrammer og grafer) Ytterligere Komponenten tilhører TeeChart-familien av komponenter, som brukes til å lage diagrammer og grafer
Chartfx (diagrammer og grafer) ActiveX Graf- og diagramredigerer
FIBook (Excel-sider) ActiveX Komponent for numerisk informasjonsinntasting og prosessering
VtChart (diagrammer) ActiveX Diagramvindu

I tillegg kan du vise og legge inn grafisk informasjon på overflaten til enhver vinduskomponent som har egenskapen Lerret- lerret.

Bildetabeller - DrawGrid- og StringGrid-komponenter

Komponent DrawGrid brukes til å lage en tabell i en applikasjon som kan inneholde grafiske bilder. Denne komponenten ligner på komponenten StringGrid siden sistnevnte er avledet fra DrawGrid. Derfor i DrawGrid alle egenskaper, metoder, hendelser til komponenten er tilstede StringGrid unntatt de som er relatert til teksten, dvs. unntatt eiendommer Celler, Koler, rader, objekter. Fra dette synspunktet, komponenten StringGrid har betydelig større kapasiteter enn DrawGrid siden den kan lagre både bilder og tekst i celler. Og hvis du vil skrive inn tekst i noen celler DrawGrid da må du bruke metoder for å vise tekst på en disposisjon for dette, noe som ikke er veldig praktisk.

Komponenter DrawGrid og StringGrid ha en disposisjon Lerret, som du kan legge ut bilder på.

Det finnes en metode Cell-Rect, som returnerer lerretsområdet som er tildelt for en gitt celle. Denne metoden er definert som

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

Hvor ACol og ARow- kolonne- og radindekser fra 0, i skjæringspunktet hvor cellen er plassert. Området som returneres av denne funksjonen er lerretsområdet der ønsket bilde kan tegnes. For eksempel operatøren

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

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

kopier metode CopyRect til celle (1,1) i tabellen DrawGridl bilde fra komponent BitMap. Denne cellen er andre fra venstre og andre fra toppen i tabellen, siden indeksene starter på 0. Vær oppmerksom på at hvis cellen er mindre enn størrelsen på det kopierte bildet, vil kun den øvre venstre delen av bildet vises i cellen.

Bilde på komponentlerretet DrawGrid og StringGrid, som på lerretet til en hvilken som helst komponent, kan det slettes når programvinduet overlappes av andre vinduer, eller for eksempel når programmet minimeres.

En praktisk måte å legge inn bilder i celler DrawGrid er å bruke en hendelsesbehandler OnDrawCell. Disse hendelsene oppstår for hver tabellcelle når den tegnes på nytt. Håndteringsoverskriften ser slik ut:

prosedyre TForml.DrawGridlDrawCell(Sender: TObject;

ACol, ARow: Heltall; Rect: TRect; Delstat: TGridDrawState)

Parameter Stat indikerer tilstanden til cellen. Det er et sett som kan inneholde følgende elementer: gdSelected- valgt celle, gdFokusert- cellen som er i fokus, gdFixed- en celle i et fast område av bordet. Parameter Stat kan brukes til å vise celler forskjellig i forskjellige tilstander.

Formkomponent

Formkomponent kan kun betinget klassifiseres som et middel for å vise grafisk informasjon, siden det ganske enkelt representerer forskjellige geometriske former, passende skyggelagt. Hovedegenskapen til denne komponenten er Form(form), som kan ha følgende verdier:

StRektangel – rektangel;

StSquare – kvadrat;

StRoundRect - rektangel med avrundede hjørner;

StRouhdSquare - firkantet med avrundede hjørner;

StEllipse – ellipse;

StCircle - sirkel.

En annen viktig egenskap ved komponenten er Børste(børste). Denne egenskapen er et objekt av typen TBrush, har en rekke underegenskaper, spesielt farge (Brush.Color) og stil (Brush.Style) fyller figuren. Du kan se fyllingen for noen stilverdier i fig. 3.2. Den tredje spesifikke egenskapen til komponenten Form- Penn(penn) som definerer linjestilen.

Diagramkomponent

La oss nå se på komponenten Diagram. Denne komponenten lar deg bygge ulike diagrammer og grafer som ser veldig imponerende ut. Komponent Diagram har mange egenskaper, metoder, hendelser, slik at hvis vi vurderte dem alle, ville vi måtte vie et helt kapittel til dette. Derfor vil vi begrense oss til å vurdere bare hovedegenskapene Diagram. Du kan finne resten i Delphis innebygde hjelp, eller bare prøve dem ut ved å eksperimentere med diagrammene.

Komponent Diagram er en beholder med gjenstander Serie- arvinger av klassen TChartSeries. Hvert slikt objekt representerer en serie data preget av en bestemt visningsstil: en bestemt graf eller diagram. Hver komponent Diagram kan omfatte flere episoder. Hvis du ønsker å vise en graf, vil hver serie tilsvare en kurve på grafen. Hvis du vil vise diagrammer, kan du for noen typer diagrammer legge flere forskjellige serier oppå hverandre, for andre (som kakediagrammer) vil det sannsynligvis se stygt ut. Men selv i dette tilfellet kan du stille inn for én komponent Diagram flere serier av samme data med forskjellige diagramtyper. Deretter, ved å gjøre en av dem aktiv hver gang, kan du gi brukeren et valg av typen diagram som viser dataene de er interessert i.

Plasser en eller to komponenter Diagram på skjemaet og se på egenskapene som åpnes i objektinspektøren. Her er noen forklaringer på noen av dem.

AllowPanning - bestemmer brukerens evne til å rulle den observerte delen av grafen under utførelse ved å trykke på høyre museknapp. Mulige verdier: pmIngen - rulling er forbudt, pmHori/ontal, pm Vertikal eller pmBegge - rulling er henholdsvis tillatt kun i horisontal retning, kun i vertikal retning, eller i begge retninger.

AhowZoom - lar brukeren endre zoomen til et bilde under kjøring ved å kutte ut deler av et diagram eller graf med musepekeren. Hvis rammen til et fragment er tegnet til høyre og ned, strekkes dette fragmentet til å dekke hele feltet til grafen. Og hvis rammen er tegnet opp og til venstre, blir den opprinnelige skalaen gjenopprettet.

Tittel - definerer tittelen på diagrammet.

Fot - definerer bildeteksten under diagrammet. Ingen som standard. Signaturteksten bestemmes av underegenskapen Tekst.

Ramme - definerer rammen rundt diagrammet.

Ved siden av mange av de listede egenskapene i objektinspektøren er det knapper med ellipser som lar deg kalle opp en eller annen side i diagramredigereren - et flersidet vindu som lar deg angi alle egenskapene til diagrammene. Diagrameditoren kan også kalles opp ved å dobbeltklikke på komponenten Diagram eller ved å høyreklikke på den og velge Rediger diagram-kommandoen fra hurtigmenyen.

Dobbeltklikk på den øverste komponenten Diagram. Du vil bli tatt til diagramredigeringsvinduet på diagramsiden, som har flere faner. Først av alt vil du være interessert i Serier-fanen på den. Klikk på Legg til-knappen - legg til en serie. Du vil bli tatt til et vindu der du kan velge type diagram eller graf. I dette tilfellet velger du kake - et sektordiagram. Ved å bruke Titler-fanen kan du angi tittelen på diagrammet, Legend-fanen lar deg angi parametere for å vise diagramforklaringen (liste over symboler) eller fjerne den fra skjermen helt, Panel-fanen bestemmer utseendet til panelet på som diagrammet vises, gir 3D-fanen deg muligheten til å endre utseendet på diagrammet: tilt, shift, tykkelse osv.

Når du arbeider i diagramredigering og har valgt en diagramtype, vil komponentene Diagram Skjemaet ditt viser utseendet med de betingede dataene som er lagt inn i det. Derfor kan du umiddelbart se resultatet av å bruke ulike alternativer på applikasjonen din, noe som er veldig praktisk.

Seriesiden, som også har en rekke faner, gir deg muligheten til å velge flere visningsalternativer for serien. Spesielt for et sektordiagram, på Format-fanen, er det nyttig å aktivere alternativet Circled Pie, som vil sikre at diagrammet vises som en sirkel i alle størrelser av diagramkomponenten. På Merker-fanen bestemmer knappene i Stilgruppen hva som skal skrives på etikettene knyttet til individuelle segmenter av diagrammet: Verdi - verdi, Prosent - prosenter, Etikett - datanavn, etc.

Du kan, hvis du ønsker det, legge til en annen identisk serie til denne diagramkomponenten ved å klikke på Klon-knappen på Serier-fanen på diagramsiden, og deretter for denne ny serie Klikk på Endre-knappen og velg en annen diagramtype, for eksempel søyle.

Avslutt diagramredigering, velg den nederste diagramkomponenten i programmet og gjenta innstillingen av egenskapene ved hjelp av diagramredigering. I dette tilfellet må du spesifisere to serier hvis du vil vise to kurver på grafen, og velge Linjediagramtypen. Fordi det vi snakker om om grafer, kan du bruke Akse- og Vegger-fanene til å spesifisere koordinatkarakteristikkene til aksene og tredimensjonale kanter til grafen.

Det er det for design utseende søknaden avsluttes. Alt som gjenstår er å skrive koden som spesifiserer dataene du vil vise. For testapplikasjonen, la oss sette bare noen konstante data i kakediagrammet, og noen funksjoner i grafene.

For å angi de viste verdiene, må du bruke seriemetoder. La oss kun fokusere på tre hovedmetoder.

Metode Klar sletter en serie med tidligere innlagte data.

Metode Legg til:

Legg til(Const AValue:Double; Const ALabel:String; AColor:TColor) ,

lar deg legge til et nytt punkt i diagrammet. Parameter En verdi tilsvarer tilleggsverdien, parameter En merkelapp- en etikett som vises på diagrammet og i forklaringen, AColor- farge. Parameter En merkelapp- valgfritt, det kan settes tomt: ' '. Metode AddXY:

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

lar deg legge til et nytt punkt i funksjonsgrafen. Alternativer AXVerdi Og AYVerdi samsvarer med argument og funksjon. Alternativer ALabel og AColor det samme som i metoden Legg til.

Dermed kan prosedyren for å laste inn data i vårt eksempel se slik ut:

konst Al = 155; A2=251; A3=203; A4=404; var i:ord; begynne

Med serien begynner

Add(Al,"Workshop l",clYellow);

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

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

Add(A4,"Workshop 4",clLilla); slutt;

Series2.Clear; SeriesS.Clear; for i:=0 til 100 begynner

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

SeriesS.AddXY(0,02*Pi*i,cos(0,02*Pi*i) slutt;

ClRed); ,clBlå);

Operatører Klar er nødvendig hvis du skal oppdatere data mens applikasjonen kjører.

Dette avslutter vår introduksjon til komponenten Diagram. Det er sant at vi bare har vurdert en liten del av dens evner.

Arbeid med grafikk i Delphi er det ikke bare linjer og tegninger, men også trykk tekstdokumenter. Derfor i Delphi på jobb med grafikk du må bruke litt tid. Jobbe med grafikk i Delphi involverer tilgang til lerretet - Canvas-egenskapen til komponenter. Lerret Delphi dette er et lerret som lar programmereren ha tilgang til hvert av punktene (piksler), og, som en artist, vise det som kreves. Selvfølgelig tegne piksel for piksel for jobber med grafikk i Delphi er ikke nødvendig, Delphi-systemet gir kraftig grafiske verktøy, noe som gjør programmererens oppgave enklere.

Når du arbeider med grafikk i Delphi, har programmereren en disposisjon (lerret, lerret - eiendom) til disposisjon Lerret Delphi-komponenter), blyant (eiendom Penn), pensel (penselegenskap) til komponenten eller objektet du skal male på. Ved blyanten Penn og børster Børste du kan endre farge (Fargeegenskap) og stil (Stylegenskap). Tilgang til fonter tilbys av lerretsegenskapen Font. Disse verktøyene lar deg vise både tekst og ganske komplekse grafer av matematisk og teknisk innhold, samt tegninger. I tillegg, jobber med grafikk lar deg bruke slike ressurser i Delphi Windows som grafikk og videofiler.

Selvfølgelig har ikke alle komponenter i Delphi disse egenskapene. På fanen Ytterligere en spesialisert komponent er plassert TIbilde, spesielt designet for tegning, men også eiendommen Lerret har for eksempel komponenter som ListBox, ComboBox, StringGrid, samt selve Form som plasserer komponentene våre! I tillegg, for å skrive ut dokumenter, får Delphi tilgang til Canvas-egenskapen til et objekt, for eksempel skriveren.

Hovedegenskapen til et slikt objekt som Canvas Delphi er Piksler type TColor, det vil si at det er en todimensjonal rekke punkter (piksler) spesifisert av fargen deres. Tegning på lerretet skjer i det øyeblikket en gitt farge tildeles til et hvilket som helst punkt på lerretet. Hver piksel kan tildeles hvilken som helst farge som er tilgjengelig for Windows. For eksempel å utføre setningen

Image1.Canvas.Pixels:=clRed;

Vil resultere i å tegne en rød prikk med koordinater. Du kan finne ut fargen på en piksel ved omvendt tilordning:

Farge:=Bilde1.Lerret.Piksler;

Type TColor definert som et langt heltall (LongInt). De fire bytene inneholder informasjon om proporsjonene mellom blå (B), grønn (G) og rød (R) farger. I heksadesimalt system det ser slik ut: $00BBGGRR. Andelen av hver farge kan variere fra 0 til 255. Derfor, for å vise det maksimale røde punktet, må det tildeles farge $000000FF.
For standardfarger i Delphi er et sett med tekstkonstanter definert. Du kan se det ved å åpne egenskapen Color, for eksempel, for det samme skjemaet i objektinspektøren.

Følgende tabell inneholder noen egenskaper og metoder for lerret:

Prosedyre TextOut(X, Y: Heltall; konst Tekst: WideString);
Produserer en strengutgang Tekst starter fra (X, Y) - pikselet øverst til venstre i teksten.
Property TextWidth( var Tekst: String): Heltall;
Inneholder lengden på strengen Tekst i piksler.
Eiendom TextHeight( var Tekst: String): Heltall;
Inneholder linjehøyden Tekst i piksler.
Prosedyre Flytt til(X, Y: Heltall);
Flytter posisjonen til pikselen med adresse (X, Y).
Prosedyre LineTo(X, Y: Heltall);
Tegner en rett linje fra punktet for gjeldende posisjon til pikselen med adressen (X, Y). Adressen (X, Y) blir punktet for gjeldende posisjon.
Prosedyre FillRect( konst Rekt: TRect);
Fyller et rektangel Rect på lerretet ved å bruke gjeldende pensel. Kan blant annet brukes til å slette deler av et bilde på lerretet.

La oss skrive, med bare disse lerretsmetodene, en applikasjon for et bilde på komponentlerretet Bilde tekst som legges inn i komponenten Memo:

Det første vi skal gjøre er å initialisere variablene når programmet starter. Det er nødvendig å bestemme størrelsen på tegneområdet (vi vil lage en global variabel Rect av typen TRect for dette) og angi bakgrunnsfargen Bilde hvit:

fremgangsmåte TForm1.FormCreate(Sender: TObject);
begynne
Rekt.venstre:=0;
Rect.Top:=0;
Rect.Right:=Image1.Width;
Rect.Bottom:=Bilde1.Høyde;
Image1.Canvas.Brush.Color:=clWhite;
slutt;

Tegn deretter en ramme på sidene av bildet:

fremgangsmåte TForm1.side;
begynne
med Bilde1.Lerret gjøre
begynne
Flytt til(0, 0);
LineTo(Image1.Width-1, 0);
LineTo(Image1.Width-1, Image1.Height-1);
LineTo(0, Bilde1.Høyde-1);
LinjeTil(0, 0);
slutt;
slutt;

La oss prøve hva som skjedde. Alt fungerer, men rammen er ikke vist ennå. La oss derfor legge til en prosedyre side i prosedyren FormCreate. Nå er det vakkert. Deretter vil vi skrive en enkel prosedyre for å slette og slette bilde. Det må kalles opp før enhver bildeoppdatering, ellers vil de forrige og påfølgende bildene overlappe hverandre.

fremgangsmåte TForm1.clearing;
begynne
Image1.Canvas.FillRect(Rect); //Rektangel Rect er fylt med hvitt og bildet slettes.
slutt;

Nå er det turen til selve tekstutdataprosedyren. La oss begynne å tegne tekst fra punkt (3, 3) - øvre venstre hjørne av arket, med en liten innrykk på 3 piksler. Hver påfølgende linje vil bli forskjøvet med linjehøyde:

fremgangsmåte TForm1.prn;
var i: Heltall;
begynne
med Bilde1.Lerret gjøre
til i:=1 til Memo1.Lines.Count gjøre
TextOut(3, 3+(i-1)*TextHeight("A"), Memo1.Lines);
slutt;

Nå er alt klart for å skrive ut tekst. Vi vil gjøre dette ved å bruke OnChange-hendelsen:

fremgangsmåte TForm1.Memo1Change(Sender: TObject);
begynne
lysning;
prn;
side;
slutt;

Og til slutt, prosedyren for å endre skriftstørrelsen:

fremgangsmåte TForm1.Edit1Change(Avsender: TObject);
begynne
Memo1.Font.Size:=UpDown1.Position;
Image1.Canvas.Font.Size:=UpDown1.Position;
Memo1Change(Avsender);
slutt;

Du kan endre dette programmet for å skrive ut tekst. For å jobbe med skriveren må du koble til modulen Skrivere:

enhet Enhet 1;

Grensesnitt

bruker
Windows, meldinger, SysUtils, varianter, klasser, grafikk, kontroller, skjemaer,
Dialoger, StdCtrl, Skrivere ;

Når du arbeider med skriveren som lerret, kalles metoden for å starte utskrift StartDoc, deretter sendes dokumentet ut, utskriften fullføres ved å kalle metoden EndDoc:

Printer.BeginDoc;
med Printer.Canvas gjøre
begynne
...Skriv ut dokument...
slutt;
Printer.EndDoc;

Bredden og høyden på skriverbanen er tilgjengelig gjennom egenskapene Printer.PageWidth Og Printer.PageHeight. Du kan fullføre utskriften på én side og begynne å skrive ut på en annen ved å bruke metoden Printer.NewPage.

LABORATORIEARBEID

EMNE: « Grafikk iDelphi– konstruksjon av de enkleste
geometriske former"

Kort informasjon fra teorien

Delphi gir utvikleren tre måter å vise grafikk på:

    plotting mens programmet kjører

    bruk av ferdiglaget grafikk

    lage bilder ved hjelp av grafiske komponenter

For å bygge grafer er det laget spesielle klasser som gir verktøy og metoder for tegning: verktøyene er beskrevet i tre klasser - Tfont, Tpen, Tbrush; Tegneområdet og metodene leveres av Tcanvas-klassen.

KlasseTfont– spesifiserer egenskapene til fonten som brukes til å vise tekst på lerretet. Egenskapene til klassen er beskrevet i avsnittet "Grunnleggende egenskaper tilgjengelig for de fleste komponenter."

KlasseTpen– spesifiserer egenskapene til pennen (blyanten) som linjer tegnes med.

Egenskaper klasse Tpen:

Farge:Tcolor – linjefarge (standard – svart)

Bredde:integer – linjetykkelse i piksler;

Stil = (psSolid, psDash, psDot, psdashDot, psClear) – definerer linjestilen (heltrukken, stiplet, stiplet, stiplet stiplet, usynlig)

KlasseTbørste– angir egenskapene til penselen som maler overflaten av bildet.

Egenskaper klasse Tbørste:

Farge:Tcolor – penselfarge (standard – hvit)

Stil– børstemønster, kan ta på seg følgende verdier:

BsSolid – solid farge

BsClear – mangel på skyggelegging

BsVertikal – vertikale linjer

BsBdiagonal – høyre diagonale linjer

BsDiagCross – skrå celle

BsHorisontal – horisontale linjer

BsFdiagonal – venstre diagonale linjer

BsCross – bur

KlasseTcanvas– bestemmer overflaten som det opprettede bildet plasseres på, og verktøyene som bildet lages med: font, blyant, pensel.

Som standard brukes hele klientområdet i skjemaet som arbeidsområde (lerret) (uten overskrift, hovedmeny og rullelinjer i skjemaet), men du kan tildele mindre arbeidsområder inne i skjemaet ved hjelp av komponenter PaintBox eller Bilde. Opprinnelsen til lerretskoordinaten er det øvre venstre hjørnet av arbeidsområdet, bredden på arbeidsområdet bestemmes av egenskapen ClientWidth, høyde – eiendom Klienthøyde.

Egenskaper klasse Tcanvas:

Lerret:Tcanvas – definerer tegneområdet

Børste:Tbrush – pensel for maling av lukkede former

Font:Tfont – font for visning av tekst på lerretet

Penn:Tpen – blyant (penn) for tegning

PenPos:Tpoint – gjeldende posisjon til den usynlige markøren på lerretet

Kommentar : Tpoint type – definert som følger:

Type Point = post

Piksler: Tcolor - setter fargene på lerretspikslene, X, Y - pikselkoordinater. Piksler-egenskapen er praktisk å bruke for å plotte grafer ved å bruke punkter i den valgte fargen.

Hovedmetodene i TCanvas-klassen

    fremgangsmåte Flytte til(x,y:heltall); - flytter pennen uten å tegne en linje til et punkt med koordinater (x, y).

    Fremgangsmåte LineTo(x,y:heltall); - trekker en linje fra gjeldende punkt til punktet med koordinater (x, y).

Eksempel : Tegn en diagonal blå linje på formen fra øverste venstre hjørne av figuren til nedre høyre hjørne.

Penn.farge:= clblue;

Flytt til(0,0); LineTo(ClientWidth, ClientHeight);

    fremgangsmåte Rektangel(xl,yl,x2,y2:heltall); - tegner et rektangel: x1,y1 - koordinatene til øvre venstre hjørne; x2, y2 er koordinatene til nedre høyre hjørne.

Eksempel : Tegn en gulfarget firkant med en side på 60 piksler i midten av formen.

var Xc,Yc: heltall; //

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.color:=clyellow;

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

    fremgangsmåte Ellipse(xl,yl,x2,y2:heltall); - tegner en ellipse innskrevet i et rektangel med de angitte koordinatene.

Eksempel : tegn en ellipse innskrevet i PaintBox-komponenten.

PaintBox1.Canvas.Pen.Width:=4; //linjebredde = 4 piksler

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

    fremgangsmåte Polygon(); - tegner en lukket polygon spesifisert av en rekke koordinater.

Eksempel : Tegn en fylt diamant som forbinder midtpunktene på sidene av formen

Var Xc,Yc:heltall; // koordinater til midten av skjemaets klientområde

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.Color:=Rgb(275,140,70); // oransje farge skyggelegging

Canvas.Polygon();

slutt;

    Fremgangsmåte Bue(x1,y1,x2,y2,x3,y3,x4,y4:heltall); - viser buen til en ellipse avgrenset av et rektangel (x1, y1, x2, y2). Buen vises fra et punkt med koordinater (x3,y3) til et punkt med koordinater (x4,y4) imot med urviseren.

Eksempel : Tegn en ellipsebue som forbinder midten av oversiden av komponenten
PaintBox med midten av høyre side.

Prosedyre Tform1.Button1Click(Sender:Tobject);

Var X3,y3,x4,y4: Heltall;

Med PaintBox1 gjør det

Canvas.Pen.Color:= clWhite;

Canvas.Pen.Width:= 3;

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

X3:= ClientWidth div 2;

X4:= ClientWidth;

Y4:= ClientHeight div 2;

Canvas.Pen.Color:= clMaroon;

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

Slutt;

    fremgangsmåte Akkord(x1,y1,x2,y2,x3,y3,x4,y4:heltall); - tegner en akkord - en rett linje som forbinder 2 punkter på ellipsen: et punkt med koordinater (x3, y3) med et punkt (x4, y4).

Eksempel : Bytt ut Chord-metoden i eksemplet gitt med ARC-metoden og få følgende resultat.

    fremgangsmåte Pai(x1,y1,x2,y2,x3,y3,x4,y4:heltall); - tegner et ellipsesegment som forbinder midten av ellipsen med koordinater (x3,y3) og (x4,y4).

Eksempel : I eksemplet gitt for ARC-metoden, se for deg PIE-metoden og få dette resultatet.

    fremgangsmåte Tekstut(x,y:heltall;Tekst:streng); - sender ut strengen som sendes i tekstparameteren til et rektangel hvis øvre venstre hjørne er spesifisert x,y koordinater. Skriftegenskaper angis av fontverktøyet.

Eksempel : skriv navnet på den plottede grafen nederst i skjemaet.

Canvas.Font.Height:=20 ; //tegnhøyde 20 piksler

Canvas.Font.Color:=clblue;

Canvas.TextOut(10, ClientHeight-24, ‘graf av funksjon SIN(X)’);

Grafiske komponenter

Delphi tilbyr en rekke ferdige komponenter som lar deg forbedre brukergrensesnitt. Disse komponentene er plassert på siden Ytterligere Og System komponentpaletter.

KomponentBilde(KlasseTimage) – laget for å vise grafiske bilder lagret i eksterne filer med utvidelser:

    Ico(ikon, piktogram);

    Bmp (bitmap, bitmap);

    Wmf, .emf (metafil);

    Jpg, .jpeg (JPEG-komprimert bilde).

Grunnleggende egenskaper :

Auto størrelse:boolean – når satt til true, justerer komponenten dimensjonene til størrelsen på det innlastede bildet; standard er falsk.

Tøye ut:boolean – hvis den er sann, opptar den innlastede verdien hele området til komponenten; standard er falsk.

Lerret:Tcanvas – brukes til å tegne inne i komponenten under programkjøring.

Bilde:Tbilde - Definerer bildet plassert i komponenten.

Grunnleggende metoder klasse Tbilde:

Fremgangsmåte Last inn fra fil(Filnavn:streng); - laster et bilde fra en fil med navnet Filnavn inn i komponenten.

Fremgangsmåte SaveToFile(Filnavn:streng); -lagrer bildet fra komponenten til en fil som heter Filnavn.

KomponentPaintBox - definerer et rektangulært tegneområde. Hovedeiendommen er Lerret, alle metodene i Tcanvas-klassen er tilgjengelige, den har ingen uavhengige egenskaper.

Eksempel : Tegn en gul ellipse innskrevet i PaintBox1-komponenten.

Prosedyre Tform1Button1Click(sender:Tobject);

Med PaintBox1.Canvas gjør

Brush.Color:=clyellow;

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

slutt;

KomponentBitBtn rasterknapp

BitBtn-knappen, i motsetning til standarden, kan, i tillegg til tittelen (Caption), inneholde et bilde spesifisert av egenskapen Glyph. Det er et sett med standard BitBtn-knapper, med forhåndsdefinerte egenskaper (med et spesifikt bilde, inskripsjon og formål) - typen standardknapp velges gjennom egenskapen Snill. Kind=(bkCustom, bkAbort,bkCancel, bkClose …)

Oppgave nr. 1

Lag en applikasjon som inneholder to bildekomponenter og 4 knapper på hovedskjemaet ("Last bilde", "Bygg en geometrisk figur", "Endre farge", "Avslutt"), og lar deg:

a) last inn i Image1-komponenten valgt av brukeren grafisk bilde slik at bildet opptar hele området til bildekomponenten.

b) under Image1-komponenten viser inskripsjonen "Dette er et bilde fra en fil.

(for enhver måling av størrelsen og plasseringen av komponentenBilde1 inskripsjon skal
ligger strengt under komponenten).

c) tegne en geometrisk figur inne i Image2-komponenten: et fylt ellipsesegment som forbinder midten av Image-komponenten med midten av bunnen og høyresiden av Image-komponenten.

(for enhver endring i størrelsen og plasseringen av komponentenBilde2 skal figuren være riktig konstruert, dvs. i henhold til spesifikasjonen for komponentenBilde2)

d) endre fargen på linjen til en figur tegnet i Image2 på brukerens forespørsel ved å bruke ColorDialog-komponenten.

Oppgave nr. 2

Lag et program som lar deg plassere flere etiketter tilfeldig (for eksempel ordet "Hurra!") i bildekomponenten. For å implementere, bruk en generator tilfeldige tall Randomize og Random-funksjonen.

Dimensjonene til bildekomponenten, ordet som vises i bildet og antall ord må angis av brukeren.

Oppgave nr. 3

Lag et program som lar deg velge navnet på en geometrisk form fra en ListBox og tegne den valgte formen i bildekomponenten. Fargen på formen velges fra RadioGroup-komponenten.

Oppgave nr. 4

Del PaintBox1-komponenten i 4 like deler, mal hver del i en annen farge, for eksempel: blå, gul, grønn, rød.

Ved siden av hvert hjørne av PaintBox1 skriver du koordinatene til det hjørnet (i forhold til opprinnelsen til skjemaet som PaintBox1-komponenten er plassert på).

Oppgave nr. 5

MED

velg typen form som skal tegnes fra Radiogroup1-komponenten, fyllfargen fra Radiogroup2-komponenten, og tegn den valgte formen i Image-komponenten.

Oppgave nr. 6

Lag et program som lar brukeren angi dimensjonene til PaintBox1-komponenten (i piksler).

Del PaintBox1-komponenten i 2 like deler, inni hver del tegner du en ellipse, fylt med fargen valgt av brukeren i ColorDialog.

Oppgave nr. 7

MED Lag en applikasjon som lar deg:

velg navnet på en geometrisk form fra ListBox og tegn den valgte formen i bildekomponenten. Formen skal fylles med fargen valgt av brukeren i ColorDialog-komponenten hvis Ja er valgt i RadioGroup-komponenten.

Oppgave nr. 8

Lag et program som lar brukeren angi dimensjonene til PaintBox1-komponenten (i piksler).

Del PaintBox1-komponenten i 4 like deler, inni hver del tegner du en annen geometrisk form (ellipse, rombe, trekant og rektangel). Fargen på hver form velges av brukeren i ColorGrid.

Oppgave nr. 9

velg navnet på den geometriske formen fra ListBox
former (ellipse, rombe, rektangel) og tegne
den valgte formen i bildekomponenten. plassering
figurer i bildekomponenten (I kvartal, II kvartal,

III eller IV kvartal) og fargen på figuren velges
fra RadioGroup-komponenter.

Oppgave nr. 10

Lag et program som lar brukeren angi dimensjonene til PaintBox1-komponenten (i piksler).

Sørg for at sidestørrelsen ikke kan være tekst, ikke kan være et negativt tall og ikke kan overskride den mindre skjemastørrelsen.

Del PaintBox1-komponenten i 4 like deler, inni hver del tegner en geometrisk form valgt av brukeren i Combobox (ellipse, rombe, trekant og rektangel). Fargen på figuren velges av brukeren i ColorBox.

Oppgave nr. 11

Lag en applikasjon som lar deg:

velg posisjonen til tegningen fra Radiogruppe-komponenten

i Bilde-komponenten i den høyre trekanten, sett
fargen på figurens skyggelegging eller konturfarge, avhengig av
aktiverer avmerkingsboksknapper. Velg farge via
ColorGrid-komponent.

Oppgave nr. 12

Lag et program som lar brukeren angi dimensjonene til PaintBox1-komponenten (i piksler).

Sørg for at sidestørrelsen ikke kan være tekst, ikke kan være et negativt tall og ikke kan overskride den mindre skjemastørrelsen.

Del PaintBox1-komponenten i 2 like deler, inne i en av delene tegner du en geometrisk form valgt av brukeren i Combobox (ellipse, rombe, trekant og rektangel). Fargen på figuren velges av brukeren i ColorBox.

Du kan for eksempel endre fargen på skjemaet som følger:

form1.Color:= ColorBox1.Colors;

Oppgave nr. 13

Lag en applikasjon som lar deg:

a) tegn en firkant i midten av formen (størrelsen på siden av firkanten legges inn av brukeren). Sørg for at sidestørrelsen ikke kan være tekst, ikke kan være et negativt tall og ikke kan overskride den mindre skjemastørrelsen.

b) del firkanten i en diagonal eller to, avhengig av inkluderingen av avkrysningsboksknappene, og mal hver resulterende trekant en annen farge. Valget av farge gjøres av brukeren.

Oppgave nr. 14

Lag et program som lar brukeren angi dimensjonene til PaintBox1-komponenten (i piksler).

Sørg for at sidestørrelsen ikke kan være tekst, ikke kan være et negativt tall og ikke kan overskride den mindre skjemastørrelsen.

Del PaintBox1-komponenten i 2 like deler, inni den ene delen tegne en rombe, og inne i den andre delen tegne en hvilken som helst trekant. Fargen på figuren velges av brukeren i ColorBox.

Du kan for eksempel endre fargen på skjemaet som følger:

form1.Color:= ColorBox1.Colors;

Oppgave nr. 15

Lag en applikasjon som lar deg:

a) angi dimensjonene til bildekomponenten horisontalt og vertikalt til å være det samme og lik tallet som er angitt av brukeren fra tastaturet;

(sørg for at sidestørrelsen ikke kan være tekst, ikke kan være et negativt tall og ikke kan overskride den mindre formstørrelsen)

b) del bildekomponenten i 4 like firkanter med to blå linjer;

c) inne i hver resulterende firkant, tegn en sirkel innskrevet i den (la brukeren velge fargen på sirklene gjennom fargevalgsdialogboksen).

Oppgave nr. 16

Lag et program som lar brukeren angi dimensjonene til PaintBox1-komponenten (i piksler).

Sørg for at sidestørrelsen ikke kan være tekst, ikke kan være et negativt tall og ikke kan overskride den mindre skjemastørrelsen.

Del PaintBox1-komponenten i 9 like deler og mal hvert resulterende sjakkbrettrektangel. Fyllfargen velges av brukeren i ColorBox.

Du kan for eksempel endre fargen på skjemaet som følger:

form1.Color:= ColorBox1.Colors;

Oppgave nr. 17

Plasser to bildekomponenter og fire knapper på skjemaet: Linjefarge, Fyllfarge, Ok og Avslutt; og Rediger-komponenten.

Når du klikker på OK-knappen, tegnes en firkant med side X i Bilde1, og en rettvinklet trekant med like ben, som hver har lengde X, tegnes i Bilde2.

Toppunktet til trekanten faller sammen med opprinnelsen til Image2. En av hjørnene på firkanten faller sammen med opprinnelsen til Image1.

OK-knappen blir bare tilgjengelig når du har valgt en linjefarge og en fyllfarge for å tegne formen.

X – velger tilfeldig ved hjelp av tilfeldig funksjon og verdien av X skal vises i Rediger-komponenten.

Oppgave nr. 18

Lag et program som lar brukeren angi dimensjonene til PaintBox1-komponenten (i piksler).

Del PaintBox1-komponenten i 4 like deler; inne i den brukervalgte delen skal det bygges en fylt sirkel, hvis størrelse angis av brukeren. Brukeren velger fyllfargen i ColorBox.

Du kan for eksempel endre fargen på skjemaet som følger:

form1.Color:= ColorBox1.Colors;

Liste over komponenter for visning av grafisk informasjon

For å vise grafisk informasjon, tilbyr Delphi-biblioteket komponenter, listen over disse er gitt i tabell 4.1.

Tabell 4.1 Komponenter for grafisk informasjonsvisning Piktogram

Komponent

Side

Beskrivelse

Bilde

Brukes til å vise grafikk: ikoner, punktgrafikk og metafiler.


PaintBox (vindu for tegning)

Brukes til å lage et område på skjemaet der du kan tegne.


DrawGrid (tabell over tegninger)

Brukes til å vise ikke-tekstdata i rader og kolonner.


Diagram (diagrammer og grafer)

Komponenten tilhører TChart-familien av komponenter, som brukes til å lage diagrammer og grafer.


I tillegg kan du vise og legge inn grafisk informasjon på overflaten av hvilken som helst Vis grafikk på et lerret.

Lerret Lerret er ikke en komponent, så strengt tatt bør den ikke vurderes innenfor rammen av denne boken. Men siden mange komponenter, spesielt former, har en disposisjon og disposisjonen gir muligheten til å vise forskjellig grafisk informasjon, er det likevel tilrådelig å gi litt innledende informasjon om disposisjonen.

Lerretet er området til en komponent som du kan tegne eller vise ferdige bilder på. Den inneholder egenskaper og metoder som i stor grad forenkler Delphi-grafikk. Alle komplekse interaksjoner med systemet er skjult for brukeren, så en person som ikke er erfaren i datagrafikk i det hele tatt kan tegne i Delphi.

Hvert punkt i omrisset har koordinater X Og Y. Lerretets koordinatsystem, som andre steder i Delphi, har sin opprinnelse i øvre venstre hjørne av lerretet. Koordinere Xøker når du beveger deg fra venstre til høyre, og koordinaten Y- når du beveger deg fra topp til bunn. Koordinater måles i piksler. En piksel er det minste elementet på et designs overflate som kan manipuleres. Den viktigste egenskapen til en piksel er fargen.

Lerretet har eiendommen Piksler. Denne egenskapen er en todimensjonal matrise som er ansvarlig for fargene på lerretet. For eksempel, Lerret. Piksler samsvarer med fargen på pikselen 10. fra venstre og 20. fra toppen. Du kan behandle en rekke piksler som en hvilken som helst egenskap: endre fargen ved å gi pikselen en ny verdi, eller bestemme fargen fra en verdi som er lagret i den. For eksempel, Lerret. Piksler:=0 eller Lerret. Piksler:=clSort- dette er for å sette pikselen til svart.

Eiendom Piksler kan brukes til å tegne på lerret. La oss prøve å tegne en piksel-for-piksel-graf av en sinusoid på omrisset av skjemaet. For å gjøre dette, i skjemaet hendelsesbehandler OnPaint(tegning) kan du sette inn følgende kode:

TForm1. FormPaint(Sender: TObject);

var,Y:ekte; // funksjonskoordinater,PY: longint; // pikselkoordinater

begynne:=clHvit;

til PX:=0 til ClientWidth gjøre

(X er grafargumentet,

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

(PY - pikselkoordinat,

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

(Angi fargen på den valgte

piksel (om lysstyrke). Piksler: = 0;

slutt;

Kjør denne testapplikasjonen og du vil se resultatet vist i figur 4.1a. Sinusbølgegrafen viste seg, selv om den ikke var veldig bra, fordi er delt inn i individuelle punkter - piksler.

Lerret - klasseobjekt TCanvas har mange metoder som lar deg tegne grafer, linjer, former ved hjelp av egenskapen Penn- fjær. Denne egenskapen er et objekt, som igjen har en rekke egenskaper. En av dem er en eiendom du allerede kjenner Farge- fargen som tegningen er påført. Andre eiendom - Bredde(linje bredde). Bredden er spesifisert i piksler. Standardbredden er 1.

Eiendom Stil bestemmer type linje. Denne egenskapen kan ha følgende verdier:

Lerretet har eiendommen PenPos type TPoint(cm .). Denne egenskapen bestemmer nåværende posisjon til pennen i lerretskoordinater. Flytte pennen uten å tegne en linje, dvs. endring PenPos, produsert etter lerretsmetoden Flytt til(X,Y). Her ( X, Y) - koordinatene til punktet som pennen beveger seg til. Dette nåværende punktet blir utgangspunktet, hvorfra metoden LinjeTil(X,Y) du kan tegne en linje til et punkt med koordinater ( X,Y). I dette tilfellet flyttes det gjeldende punktet til sluttpunktet på linjen og et nytt anrop LineTo vil trekke et punkt fra dette nye nåværende punktet.

La oss prøve å tegne sinusgrafen fra forrige eksempel med en penn. I dette tilfellet, skjemahendelsesbehandleren OnPaint kan se slik ut:

fremgangsmåte TForm1. FormPaint(Sender: TObject);

var,Y:ekte; // funksjonskoordinater,PY: longint; // pikselkoordinater

begynne: =clHvit;. MoveTo(0,ClientHeight div 2);

til PX: =0 til ClientWidth gjøre

(X er grafargumentet,

som tilsvarer pikselen med koordinaten РХ):=PX*4*Pi/ClientWidth;:=Sin(X);

(PY - pikselkoordinat,

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

(En linje er tegnet på grafen). LineTo(PX,PY);

Du kan se resultatet av applikasjonen i denne versjonen i Fig. 4.1 b. Som du kan se, har kvaliteten på grafikken forbedret seg betydelig.

Pennen kan tegne ikke bare rette linjer, men også former. For en fullstendig liste over lerretsmetoder som bruker pennen, se Delphis innebygde hjelp. For nå, som et eksempel, vil vi bare gi én av dem - Ellipse, som tegner en ellipse eller sirkel. Det er erklært som

fremgangsmåte Ellipse(X1, Y1, X2, Y2: heltall);

hvor er parametrene X1, X2, Y1, Y2 Bestem koordinatene til et rektangel som beskriver en ellipse eller sirkel. For eksempel operatøren

Ellipse(10, 40, 20, 50);

vil tegne en sirkel med en diameter på 10 og senterkoordinater (15, 45).

I det generelle tilfellet tegnes ikke figurer tomme, men fylt ut ved hjelp av lerretsegenskapen Børste- børste. Eiendom Børste er et objekt som igjen har en rekke egenskaper. Eiendom Farge definerer fyllfargen. Eiendom Stil definerer fyllmønsteret (skyggelegging). Standardverdi Stil er lik bsSolid, som betyr ensfarget Farge.

Ved pennen Penn Det er en eiendom til som vi ennå ikke har vurdert. Denne eiendommen er Modus(modus). Standardverdi Modus = pmCopy. Dette betyr at linjene tegnes med fargen som er angitt i egenskapen Farge. Men andre moduser er også mulige, der ikke bare farge tas i betraktning Farge, men også fargen på de tilsvarende bakgrunnspikslene. Den mest interessante av disse modusene er pmNotXor- tillegg med bakgrunn ved å bruke invers eksklusiv OR. Hvis denne modusen er satt, vil det å tegne den samme figuren igjen på samme sted på lerretet fjerne det tidligere tegnede bildet og gjenopprette pikselfargene som var før det første bildet av figuren.

Denne funksjonen i modusen pmNotXor kan brukes til å lage enkle animasjoner. Det er nok å tegne noe, så slett det du tegnet, tegn det litt endret på nytt - og tegningen ser ut til å komme til live.

Prøv å lage en enkel animasjon selv - en bevegelig sirkel. Start en ny applikasjon og gå til gjennomføring sett inn annonse

X,Y: heltall;

Dette vil introdusere globale variabler X Og Y- gjeldende bildekoordinater.

I skjemahendelsen OnPaint sette inn uttalelser

Børste. Farge:=clHvit;:=clHvit;. Penn. Mode:=pmNotXor;

Den første av disse operatørene setter penselfargen til hvit Børste. Dette betyr at sirkelen din vil bli malt hvit inni. Den andre operatoren setter bakgrunnsfargen på skjemaoverflaten til hvit.

Den tredje operatøren angir pennemodus pmNotXor, som lar deg slette det gamle bildet før du tegner et nytt.

Selv den enkleste animasjonen trenger synkronisering. Ellers vil bevegelseshastigheten bli bestemt av hastigheten til datamaskinen. Overfør derfor komponenten til skjemaet Timer- timer fra systemsiden. Denne komponenten er beskrevet i avsnitt 5.7 .

Du kan se den der Detaljert beskrivelse. For nå, angi egenskapen Intervall lik for eksempel 30 (dette er eksponeringstiden i millisekunder, men sanntid lukkerhastigheten blir lengre - se avsnitt 5.7) og still inn egenskapen Aktivert lik falsk(dette betyr at timeren ikke starter automatisk når applikasjonen startes).

I hendelsesbehandleren for denne komponenten OnTimer sette inn uttalelser

// Slett forrige bilde. Ellipse (X-5, Y, X+5, Y-1Q); (X);

// Tegn et nytt bilde. Ellipse (X-5, Y, X+5, Y-10);

// Stopp når du når slutten av skjemaet

hvis(X >= ClientWidth-20) deretter. Aktivert: = falsk;

Den første av disse operatørene tegner en sirkel på stedet der den ble tegnet tidligere, dvs. sletter forrige bilde.

Den siste operatoren stopper bildet ved kanten av skjemaet.

Legg nå til en knapp i skjemaet Knapp og plasser operatørene i klikkbehandleren på den

X: =10;: =100;. Ellipse (X-5, Y, X+5, Y-10);. Aktivert: =true;

De to første operatorene spesifiserer de første koordinatene til sirkelen. Den tredje operatøren tegner sirkelen ved startposisjonen, og den fjerde operatøren starter tidtakeren.

Kringkast applikasjonen, kjør den, klikk på knappen. Du vil se et bilde av en sirkel som beveger seg over formen fra venstre til høyre. Og bruk deretter fantasien og forvandle denne ikke særlig interessante applikasjonen til noe mer spennende.

Lerretet kan vise ikke bare programmatisk opprettede bilder, men også bilder lagret i grafiske filer. Bare selve lerretet har ikke en metode for å laste et bilde fra en fil. Derfor må filen lastes inn i et annet grafisk objekt som kan motta informasjon fra grafikkfiler. Og skriv deretter bildet om fra dette objektet til lerretet ved å bruke lerretsmetoden Tegne. Dens beskrivelse:

Draw(X, Y: Heltall; Grafikk: TGraphic);

Her er parametrene X Og Y Bestem koordinatene til øvre venstre hjørne av bildeplasseringen på lerretet, a Grafisk- et objekt som lagrer informasjon. Et slikt objekt kan for eksempel være et objekt av typen TBitMap, designet for å lagre bitmatriser. La oss se hvordan alt dette ser ut i praksis.

Åpne et nytt program, dra en komponent til skjemaet OpenPictureDialog fra dialogsiden (dette er en komponent i dialogen for å åpne grafikkfiler - se avsnitt 8.2 ) og knappen Knapp. Plass OpenPictureDialog hvor som helst i skjemaet, siden denne komponenten er ikke-visuell, og plasser knappen nederst i skjemaet. Legg til følgende kode i din knappeklikkbehandler:

fremgangsmåte TForm1. Button1Click(Avsender: TObject);

var: TBitMap;

// Brukervalg grafisk fil

hvis OpenPictureDialog1. Henrette deretter

// Lag et BitMap-objekt av typen TBitMap: =TBitMap. Skape;

// Overfør bildet til skjemaet. Draw(10, 10, BitMap);

//Ødelegger BitMap-objektet. Gratis;

slutt;

Denne koden lager et midlertidig objekt av typen TBitMap Med navn BitMap. Deretter kalles dialogen for å åpne en grafikkfil OpenPictureDialog1 og hvis brukeren har valgt en fil, blir den lastet ned til BitMap metode Last inn fra fil. Bruk deretter metoden Tegne det innlastede bildet kopieres til lerretet i området med koordinatene i øvre venstre hjørne (10,10). Etter dette det midlertidige objektet BitMap er ødelagt.

Start applikasjonen og klikk på knappen. Du vil se at du kan laste opp alle typer grafikkfiler. bmp og det vil vises på omrisset av skjemaet (se fig. 4.2 a). Du kan finne grafikkfiler i katalogen Bilder. I Delphi 5 og 4 er det vanligvis plassert i en katalog. \programfiler\Common Files\Borland Shared. I Delphi 3 ligger den i en katalog. \program files\Borland\Delphi 3, og i Delphi 1 - i katalogen Delphi 16. I katalogen Images er det spesielt en underkatalog \Images\Splash\16Color\, som lagrer filen som er lastet inn i eksemplet i fig. 4.2

Du har laget et godt program for visning av grafikkfiler. Men la oss nå prøve å se den store ulempen. Uten å lukke søknaden din, gå til et annet program, for eksempel gå tilbake til Delphi. Deretter, uten å gjøre noe der, går du tilbake til programmet du kjører. Hvis programvinduet du gikk inn i fullstendig blokkerte vinduet til applikasjonen din, vil du se at bildet i vinduet har forsvunnet når du kommer tilbake til det. Hvis applikasjonsvinduet bare ble delvis overlappet, kan det hende du ser et resultat som er vist i fig. 4.2b når du går tilbake til applikasjonen.

Du ser at hvis vinduet til en annen applikasjon midlertidig overlapper vinduet til applikasjonen din, blir bildet som er tegnet på skjemaomrisset ødelagt. La oss se hvordan vi kan eliminere denne ulempen.

Hvis et vindu har blitt blokkert og bildet har blitt ødelagt, forteller operativsystemet applikasjonen at noe har endret seg i miljøet og at applikasjonen bør iverksette passende tiltak. Så snart en vindusoppdatering er nødvendig, genereres en hendelse for den OnPaint. I behandleren av denne hendelsen (i vårt tilfelle skjemahendelsen), må du tegne bildet på nytt.

Omtegning kan gjøres forskjellige måter avhengig av applikasjonen. I vårt eksempel ville det være mulig å deklarere en variabel BitMap(operatør var BitMap: TBitMap) utover prosedyren ovenfor, dvs. gjør denne variabelen global ved å plassere den direkte i seksjonen gjennomføring. Operatør BitMap. Gratis kan flyttes til skjemahendelsesbehandleren OnDestroy, som oppstår når applikasjonen lukkes. Deretter vil du under hele kjøringen av applikasjonen ha en kopi av bildet i komponenten BitMap og du trenger bare å gå inn i hendelsesbehandleren OnPaint skjemaet er det bare én operatør:

Draw(10, 10, BitMap);

Gjør dette, og du vil se at bildet på skjemaet ikke forringes på grunn av overlapping av vinduer.

I tillegg til den vurderte metoden Tegne omrisset har også en kopimetode CopyRect:

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

Metoden kopierer den angitte parameteren Kilde bildeområde i bildekildelerretet Lerret til den angitte parameteren Dest området av dette lerretet. Type TRect, som karakteriserer rektangulære områder Kilde Og Dest, allerede beskrevet i avsnitt 3.2 .

For eksempel operatøren

CopyRect(MyRect2, Bitmap. Canvas, MyRect1);

kopier til skjemaoversikten i området MyRect2 bilde fra området MyRect1 komponentlerret Bitmap.

Kopieringsmetode CopyRect utføres i modusen spesifisert av egenskapen CopyMode. Som standard har denne egenskapen verdien cmSrcCopy, som ganske enkelt betyr å erstatte bildet som tidligere var i området Dest, til det kopierte bildet. Andre mulige verdier CopyMode lar deg kombinere bilder, men deres vurdering ligger utenfor rammen av denne boken.

Vi vil begrense oss til denne grunnleggende informasjonen om visning av grafisk informasjon på lerretet. I avsnitt 3.2 informasjon om utgangen av teksten til disposisjonen ble gitt. Generelt er lerretet et komplekst objekt som har mange flere egenskaper og metoder. Men dette krever en utvidet diskusjon utenfor denne bokens omfang. Den neste boken i Alt om Delphi-serien vil utforske disse problemene mer detaljert.

En vinduskomponent som har egenskapen Lerret- lerret.

Bilde- og PaintBox-komponenter

Komponenter Bilde Og PaintBox representere en begrenset overflate med et lerret som bilder kan skrives på, som beskrevet i avsnitt 4.2 . I dette tilfellet, komponenten PaintBox, gir strengt tatt ikke noe nytt sammenlignet med å tegne et skjema på et lerret. Tegner på PaintBox i stedet for en form, har den ingen fordeler, bortsett fra kanskje en viss lettelse i arrangementet av en eller flere tegninger i vindusområdet.

Men i tillegg til disse egenskapene, komponenten Bilde Det er egenskaper som lar deg jobbe med forskjellige typer grafiske filer Støtter tre typer filer - bitmatriser, ikoner og metafiler. Alle tre filtypene lagrer bilder; forskjellen ligger bare i måten de er lagret inne i filer og i måten de får tilgang til. Bitmatrise (fil med utvidelse . bmp) viser fargen på hver piksel i bildet. I dette tilfellet lagres informasjonen på en slik måte at enhver datamaskin kan vise et bilde med en oppløsning og antall farger som tilsvarer konfigurasjonen.

Piktogrammer (filer med filtypen . ico) er småbitmatriser. De brukes ofte til å representere applikasjonsikoner, i hurtigknapper, i menyelementer, i ulike lister. Metoden for å lagre bilder i ikoner ligner på å lagre informasjon i bitmatriser, men det er også forskjeller. Spesielt kan ikonet ikke skaleres; det forblir størrelsen det ble opprettet i.

Metafiler lagrer ikke sekvensen av biter som utgjør bildet, men informasjon om hvordan bildet ble opprettet. De lagrer sekvenser av tegnekommandoer, som kan gjentas når du gjenskaper bildet. Dette gjør slike filer generelt mer kompakte enn bitmatriser.

Komponent Bilde lar deg vise informasjon som finnes i grafikkfiler av alle spesifiserte typer. Dette oppnås av sin eiendom Bilde- skriv objekt TBilde.

Fig.4.3 Bilderedigeringsvindu


For å bli kjent med denne egenskapen, åpne en ny applikasjon og dra en komponent til skjemaet Bilde. Strekk den eller sett egenskapen Tilpasse lik alClient slik at den tar opp hele klientområdet i skjemaet. Klikk på knappen med ellipsen ved siden av eiendommen Bilde i Object Inspector-vinduet eller dobbeltklikk på Bilde. Bilderedigeringsvinduet åpnes foran deg (fig. 4.3), slik at du kan laste inn i egenskapen Bilde noen grafikkfil (Load-knappen), og også lagre åpen fil under et nytt navn eller i en ny katalog. Klikk på Last inn for å laste inn grafikkfilen. Du vil se et vindu for å åpne en grafikkfil, vist i Fig. 4.4 Når du flytter markøren i listen over grafikkfiler, vises bildene de inneholder i høyre vindu, og over dem er det tall som karakteriserer størrelsen på bildet . Du kan velge hvilken som helst type grafikkfil du trenger. La oss minne deg på at du kan finne grafikkfilene som følger med Delphi i katalogen Bilder. I Delphi 5 og 4 er det vanligvis plassert i en katalog. \programfiler\Common Files\Borland Shared. I Delphi 3 ligger den i en katalog. \program files\Borland\Delphi 3, og i Delphi 1 - i katalogen Delphi 16. Når filen er lastet inn, klikker du OK i bilderedigeringsvinduet og i komponenten din Bilde Bildet du valgte vil vises. Du kan starte applikasjonen din og beundre den. Du ser imidlertid allerede bildet uten engang å kjøre programmet.

Når du lastet et bilde fra en fil inn i en komponent under designprosessen Bilde, den viser det ikke bare, men lagrer det også i applikasjonen. Dette gir deg muligheten til å levere applikasjonen din uten en separat grafikkfil. Imidlertid, som vi vil se senere, i Bilde Du kan også laste inn eksterne grafikkfiler mens programmet kjører.

La oss gå tilbake til å vurdere komponentegenskapene Bilde.

Hvis du angir egenskapen Auto størrelse V ekte, deretter komponentstørrelsen Bilde vil automatisk justere til størrelsen på bildet plassert i den. Hvis eiendommen Auto størrelse installert i falsk, kan det hende at bildet ikke passer inn i komponenten, eller omvendt kan området til komponenten være mye større enn bildets område.

En annen eiendom - Tøye ut lar deg justere ikke komponenten til størrelsen på bildet, men bildet til størrelsen på komponenten. Installere Auto størrelse V falsk, strekk eller krymp størrelsen på komponenten Bilde og installere Tøye ut V ekte. Du vil se at tegningen vil ta opp hele området til komponenten, men siden det er usannsynlig å bestemme dimensjonene realistisk Bilde nøyaktig proporsjonal med størrelsen på bildet, vil bildet bli forvrengt. Installere Tøye ut V ekte kan bare gi mening for enkelte mønstre, men ikke for bilder. Eiendom Tøye ut påvirker ikke ikonbilder som ikke kan endres størrelse.

Eiendom - Senter, satt til ekte, sentrerer bildet på området Bilde, hvis komponentstørrelsen er større enn bildestørrelsen.

La oss vurdere en eiendom til - Gjennomsiktig(gjennomsiktighet). Hvis Gjennomsiktig er lik ekte, deretter bildet inn Bilde blir gjennomsiktig. Dette kan brukes til å legge bilder oppå hverandre. Plasser den andre komponenten på skjemaet Bilde og last inn et annet bilde i den. Bare prøv å ta et lite fylt konturbilde. Du kan for eksempel ta et bilde blant de som vanligvis er plassert på knapper, for eksempel en pil (fil.\programfiler\vanlige filer\borland delte\bilder\knapper\arrow1l. bmp). Flytt din Bilde slik at de overlapper hverandre, og i det øverste komponentsettet Gjennomsiktig lik ekte. Du vil se at det øverste bildet ikke lenger skjuler det nederste. En av de mulige bruksområdene for denne egenskapen er å overlegge et bilde påskrifter laget i form av en bitmatrise. Disse inskripsjonene kan lages ved å bruke Image Editor-programmet innebygd i Delphi.

Vær oppmerksom på at eiendommen Gjennomsiktig påvirker bare bitmatriser. I dette tilfellet gjøres fargen på den nedre venstre pikselen i bitmatrisen gjennomsiktig som standard (dvs. erstattet av fargen på bildet som ligger under den).

Vi dekket innlasting av et bilde fra en fil under designprosessen. Men eiendommen Bilde Det gjør det også enkelt å organisere utveksling med grafikkfiler av enhver type under kjøring av applikasjoner. For å forklare teknikken til en slik utveksling, må vi først vurdere eiendommen mer detaljert Bilde.

Denne egenskapen er et objekt, som igjen har underegenskaper som peker til det lagrede grafikkobjektet. Hvis i Bilde en bitmatrise er lagret og indikeres av egenskapen Bilde. Bitmap. Hvis et ikon er lagret, pekes det på av eiendommen Bilde. Ikon. Den lagrede metafilen er angitt av eiendommen Bilde. Metafil. Til slutt indikeres et grafisk objekt av enhver type med egenskapen Bilde. Grafisk.

En gjenstand Bilde og dens egenskaper Bitmap, Ikon, Metafil Og Grafisk ha fillese- og skrivemetoder Last inn fra fil Og SaveToFile:

fremgangsmåte LoadFromFile( konst Filnavn: streng);

fremgangsmåte SaveToFile( konst Filnavn: streng);

For eiendommer Bilde. Bitmap, Bilde. Ikon Og Bilde. Metafil Filformatet må samsvare med objektklassen: bitmatrise, ikon, metafil. Når du leser en fil inn i eiendommen Bilde. Grafisk filen må være i metafilformat. Og for selve objektet Bilde Lese- og skrivemetoder justeres automatisk til filtypen. La oss forklare dette med et eksempel.

La oss bygge en applikasjon som ligner på eksemplet med visning av grafikkfiler omtalt i avsnitt 4.2. For variasjon kan du kontrollere den ved å bruke noe annet enn en knapp Knapp, og menyen. Plasser en komponent på skjemaet Bilde. Strekk den eller sett egenskapen Tilpasse lik alClient slik at den tar opp hele klientområdet i skjemaet. Dra den grafiske filåpningsdialogkomponenten til skjemaet OpenPictureDialog(se avsnitt 8.2 ). Plasser også en hovedmenykomponent på skjemaet Hovedmeny(se avsnitt 6.1 ) og sett en seksjon i den - Fil. Skriv setningen i behandleren for denne delen

(OpenPictureDialog1.Execute) deretter. Bilde. LoadFromFile(.Filnavn);

Denne operatøren vil kalle opp en dialogboks for å åpne en grafikkfil (se fig. 4.4) og laste den inn i komponenten Bilde 1 bilde fra en fil valgt av brukeren (se fig. 4.5). Dessuten kan filen være av hvilken som helst type: bitmatrise, ikon eller metafil.

Fig.4.5 Bilde i komponent Bilde bitmatrise (a) og piktogram (6)



I denne applikasjonen metoden Last inn fra fil påføres Bilde 1. Bilde. Hvis bare bitmatrisefiler vil bli åpnet, kan fillastingsoperatøren erstattes med

Bilde. Bitmap LoadFromFile(.Filnavn);

For piktogrammer kan en operatør brukes. Bilde. Ikon. LoadFromFile(.Filnavn);

og for metafiler - operatøren. Bilde. Metafil. LoadFromFile(.Filnavn);

eller. Bilde. Grafisk. LoadFromFile(.Filnavn);

Men i alle disse tilfellene, hvis filformatet ikke samsvarer med det tiltenkte, vil det oppstå en feil. Metoden fungerer på samme måte SaveToFile med den forskjellen som gjaldt Bilde eller til Bilde. Grafisk den lagrer et bilde av hvilket som helst format i en fil. For eksempel hvis du utvider søknaden din med en dialogboks SavePictureDialog(se avsnitt 8.2 ), gå inn i Lagre som-delen i menyen og plasser operatøren i sin behandler

SavePictureDialog1. Henrette deretter. Bilde. SaveToFile(SavePictureDialog1. Filnavn);

da vil brukeren kunne lagre et bilde av hvilket som helst format i en fil med et nytt navn. Bare i dette tilfellet, for å unngå forvirring i fremtiden, må utvidelsen av den lagrede filen fortsatt samsvare med formatet til det lagrede bildet.

Programmet vil fungere helt identisk for bilder i alle formater hvis du erstatter lagre-operatøren med

Bilde. Grafisk. SaveToFile(.Filnavn);

bruke eiendom Bilde. Grafisk. Og hvis du vet formatet på hva som er lagret i komponenten Bilde bilder, så kan du bruke metoden SaveToFile til eiendommer Bilde. Bitmap, Bilde. Ikon Og Bilde. Metafil.

For alle betraktede objekter Bilde, Bilde. Bitmap, Bilde. Ikon Og Bilde. Metafil metoder for å tilordne objektverdier er definert:

Tilordne(Kilde: TPersistent);

Imidlertid for BitMap, Ikon Og Metafil Du kan bare tilordne verdier for homogene objekter: henholdsvis bitmatriser, ikoner, metafiler. Et unntak blir kastet når du prøver å tilordne verdier til heterogene objekter EConvertError. En gjenstand Bilde- universell, den kan tildeles verdiene til objekter fra en av de tre andre klassene. Og meningen Bilde kan bare tilordnes til et objekt hvis type samsvarer med typen til objektet som er lagret i det.

Metode Tildele kan også brukes til å utveksle bilder med utklippstavlebufferen. For eksempel operatøren

Assign(Image1.Picture);

vil lagre bildet som er lagret i utklippstavlen til utklippstavlen Bilde 1. Lignende operatør

grafikk delphi bildeapplikasjon

Bilde 1. Bilde. Tilordne (utklippstavle);

lese inn Bilde 1 et bilde på utklippstavlen. Dessuten kan det være et hvilket som helst bilde og til og med tekst.

Du trenger bare å huske når du arbeider med utklippstavlen for å lime inn i operatøren bruker din modulkobling til modulen Clipbrd. Delphi setter ikke automatisk inn denne lenken.

Gå tilbake til komponentegenskapene Bilde, kan vi merke oss en ulempe som ligger i testapplikasjonen vår, vist i fig. 4.5 Når du laster forskjellige bilder, kan størrelsen på applikasjonsvinduet enten være for lite, og da vil du bare se en del av bildet, eller for stort, og da vil bildet være lite attraktivt plassert i øvre venstre hjørne av skjemaet, og etterlate mye tomt. Denne ulempen kan elimineres ved å bruke egenskapene Høyde(høyde) og Bredde(bredde) komponent Bilde. Med eiendom Auto størrelse installert i ekte dimensjoner Bilde blir automatisk satt til samme størrelse som det opplastede bildet. Og disse dimensjonene kan brukes til å endre størrelsen på skjemaet tilsvarende. For eksempel kan den tidligere koden for å laste et bilde fra en fil erstattes med følgende:

OpenPictureDialog1. Henrette deretter

begynne. Bilde. LoadFromFile(.Filnavn); Klienthøyde: = Bilde1. Høyde+10;. Topp:=Skjema1. ClientRect. Topp

+ (Form1. ClientHeight - Image1. Height) div 2;. ClientWidth:=Bilde1. Bredde+10;. Venstre: = Form1. ClientRect. Venstre

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

slutt;

Denne koden setter størrelsen på skjemaets klientområde til å være litt større enn størrelsen på komponenten. Bilde 1, som igjen tilpasser seg størrelsen på bildet takket være eiendommen Auto størrelse. Gjør disse endringene i applikasjonen din, kjør den og se at skjemaet automatisk tilpasser seg størrelsen på det opplastede bildet.

Formkomponent

Komponent Form kan kun betinget klassifiseres som et middel for å vise grafisk informasjon, siden det ganske enkelt representerer forskjellige geometriske former, passende skyggelagt. Hovedegenskapen til denne komponenten er Form(form), som kan ha følgende verdier:

Eksempler på disse skjemaene er vist i fig. 4.7

Fig.4.7 Komponenteksempler Form


En annen viktig egenskap ved komponenten er Børste(børste). Denne egenskapen er et objekt av typen TBrush, som har en rekke underegenskaper, spesielt: farge ( Børste. Farge) og stil ( Børste. Stil) fyll formen. Fyller på noen verdier Stil du kan se i Fig. 4.7 Den tredje av de spesifikke egenskapene til komponenten Form - Penn(penn) som definerer linjestilen. Denne eiendommen er som eiendom Børste, er allerede omtalt i avsnitt 4.2 . Du finner referansedata om disse egenskapene i kapittel 10*.

Diagramkomponent

La oss nå se på komponenten Diagram. Denne komponenten lar deg bygge ulike diagrammer og grafer som ser veldig imponerende ut (fig. 4.8). Komponent Diagram har mange egenskaper, metoder, hendelser, slik at hvis vi vurderte dem alle, ville vi måtte vie et helt kapittel til dette. Derfor vil vi begrense oss til å vurdere bare hovedegenskapene Diagram. Du kan finne resten i Delphis innebygde hjelp, eller bare prøve dem ut ved å eksperimentere med diagrammene.

Komponent Diagram er en beholder med gjenstander Serie type TChartSeries- serie med data preget av forskjellige visningsstiler. Hver komponent kan inkludere flere serier. Hvis du ønsker å vise en graf, vil hver serie tilsvare en kurve på grafen. Hvis du vil vise diagrammer, kan du for noen typer diagrammer legge flere forskjellige serier oppå hverandre, for andre (som kakediagrammer) vil det sannsynligvis se stygt ut. Men også i dette tilfellet kan du stille inn for én komponent Diagram flere serier av samme data med forskjellige diagramtyper. Deretter, ved å gjøre en av dem aktiv hver gang, kan du gi brukeren et valg av typen diagram som viser dataene de er interessert i.

Plasser en eller to (hvis du ønsker å gjengi fig. 4.8) komponenter Diagram på skjemaet og se på egenskapene som åpnes i objektinspektøren. Her er noen forklaringer på noen av dem.

Bestemmer om brukeren kan rulle den observerte delen av grafen under utførelse ved å klikke med høyre museknapp. Mulige verdier: pmIngen - rulling er forbudt, pmHorisontal, pmVertikal eller pmBegge - rulling er henholdsvis tillatt kun i horisontal retning, kun i vertikal retning, eller i begge retninger.

Lar brukeren endre bildeskalaen under utførelse, kutte ut fragmenter av et diagram eller en graf med musepekeren (fig. 4.8 b nedenfor viser øyeblikket for visning av et fragment av grafen, fullstendig presentert i fig. 4.8 a).

Definerer tittelen på diagrammet.

Definerer etiketten for diagrammet. Ingen som standard. Signaturteksten bestemmes av underegenskapen Tekst.

Definerer en kant rundt diagrammet.

Tegnforklaringen til diagrammet er en liste over symboler.

MarginLeft, MarginRight, MarginTop, MarginBottom

Venstre, høyre, topp og bunn margverdier.

BottomAxis, LeftAxis, RightAxis

Disse egenskapene bestemmer egenskapene til henholdsvis den nederste, venstre og høyre aksen. Å angi disse egenskapene er fornuftig for grafer og noen typer diagrammer.

Venstrevegg, bunnvegg, bakvegg

Disse egenskapene bestemmer egenskapene til henholdsvis venstre, bunn og bakkant av det tredimensjonale visningsområdet til grafen (se fig. 4.8 a, nederste graf).

Liste over dataserier som vises i komponenten.

Aktiverer eller deaktiverer 3D-kartvisning.

Kjennetegn på tredimensjonal skjerm.

Tredimensjonal skala (for fig. 4.8 er dette tykkelsen på diagrammet og bredden på grafstripene).


Ved siden av mange av de listede egenskapene i objektinspektøren er det knapper med ellipser som lar deg kalle opp en eller annen side i diagramredigereren - et flersidet vindu som lar deg angi alle egenskapene til diagrammene. Diagrameditoren kan også kalles opp ved å dobbeltklikke på komponenten Diagram eller ved å høyreklikke på den og velge Rediger diagram-kommandoen fra hurtigmenyen.

Hvis du vil prøve å reprodusere applikasjonen vist i figur 4.8, dobbeltklikker du på den øverste komponenten Diagram. Du vil bli ført til Kartredigeringsvinduet (fig. 4.9) til Kartsiden, som har flere faner. Først av alt vil du være interessert i Serier-fanen på den. Klikk på Legg til-knappen - legg til en serie. Du vil bli tatt til et vindu (fig. 4.10), der du kan velge type diagram eller graf. I dette tilfellet velger du kake - et sektordiagram. Ved å bruke Titler-fanen kan du angi tittelen på diagrammet, Legend-fanen lar deg angi parametere for å vise diagramforklaringen (liste over symboler) eller fjerne den fra skjermen helt, Panel-fanen bestemmer utseendet til panelet på som diagrammet vises, gir 3D-fanen deg muligheten til å endre utseendet på diagrammet: tilt, shift, tykkelse osv.

Når du arbeider i diagramredigering og har valgt en diagramtype, vil komponentene Diagram Skjemaet ditt viser utseendet med de betingede dataene som er lagt inn i det (se fig. 4.11).

Fig.4.10 Velge en diagramtype i diagramredigereren


Derfor kan du umiddelbart se resultatet av å bruke ulike alternativer på applikasjonen din, noe som er veldig praktisk.

Seriesiden, som også har en rekke faner, gir deg muligheten til å velge flere visningsalternativer for serien. Spesielt for et sektordiagram på Format-fanen er det nyttig å aktivere alternativet Circled Pie, som vil sikre at, uansett størrelse på komponenten, Diagram vis diagrammet i form av en sirkel. På Merker-fanen bestemmer knappene i Stilgruppen hva som skal skrives på etikettene knyttet til individuelle segmenter av diagrammet: Verdi - verdi, Prosent - prosenter, Etikett - datanavn, etc. I eksemplet i figur 4.8 er Prosent-knappen aktivert, og på Generelt-fanen er en prosentmal satt for å sikre at bare heltallsverdier vises.

Du kan, hvis du vil, legge til denne komponenten Diagram en annen identisk serie ved å klikke på Klon-knappen på Serier-fanen på Diagram-siden, og deretter klikke på Endre-knappen for denne nye serien og velge en annen diagramtype, for eksempel Bar. Selvfølgelig to forskjellige typer diagrammer i ett bilde vil se dårlig ut. Men du kan slå av indikatoren for denne nye serien på Serier-fanen, og deretter la brukeren velge en eller annen type kartvisning (vi viser hvordan dette gjøres nedenfor).

Avslutt Diagram Editor, velg den nederste komponenten i programmet Diagram og gjenta innstillingsegenskaper for den ved å bruke Diagram Editor. I dette tilfellet må du spesifisere to serier hvis du vil vise to kurver på grafen, og velge Linjediagramtypen. Siden vi snakker om grafer, kan du bruke fanene Akse og Vegger til å spesifisere koordinatkarakteristikkene til aksene og tredimensjonale kanter til grafen.

Dette fullfører utformingen av applikasjonens utseende. Alt som gjenstår er å skrive koden som spesifiserer dataene du vil vise. For testapplikasjonen, la oss bare sette noen konstante data i sektordiagrammet, og sinus- og cosinusfunksjoner i grafene.

For å angi de viste verdiene, må du bruke seriemetoder Serie. La oss kun fokusere på tre hovedmetoder.

Metode Klar sletter en serie med tidligere innlagte data.

Metode Legg til:

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

lar deg legge til et nytt punkt i diagrammet. Parameter En verdi tilsvarer tilleggsverdien, parameter En merkelapp- navnet som vil bli vist på diagrammet og i forklaringen, AColor- farge. Parameter En merkelapp- valgfritt, det kan settes tomt: "".

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

lar deg legge til et nytt punkt i funksjonsgrafen. Alternativer AXVerdi Og AYVerdi samsvarer med argument og funksjon. Alternativer En merkelapp Og AColor det samme som i metoden Legg til.

Dermed kan prosedyren for å laste inn data i vårt eksempel se slik ut:

155;=251;=203;=404;

var: ord;

begynne Serie 1 gjøre

begynne;(A1, "Verksted 1", clYellow);(A2, "Verksted 2", clBlå);(A3, "Verksted 3", clRød);(A4, "Verksted 4", cllilla);

slutt;. Klar;. Klar;

til i: =0 til 100 gjøre

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

Hvis du for eksempel har gitt dataene vist i et diagram, to serier Serie 1 Og Serie 4 forskjellige typer - Pai Og Bar, så kan du introdusere en prosedyre som endrer diagramtypen i henhold til brukerens forespørsel. Denne prosedyren kan legges inn i en hendelse Ved trykk en knapp, en menykommando, eller, for eksempel, ganske enkelt å behandle et klikk på en komponent Diagram. For å laste data inn i Serie 4 og gjør dette diagrammet usynlig i første øyeblikk, kan du sette inn operatorene på slutten av den tidligere gitte prosedyren

Tilordne (Serie1); Aktiv: =false;

Den første av disse operatørene skriver om dataene som er plassert i Serie 1, i serier Serie 4. Og den andre operatøren gjør serien usynlig Serie 4. Endring av diagramtype utføres av prosedyren

Aktiv: = ikke Serie 1. Aktiv;. Aktiv: = ikke Serie 4. Aktiv;

I fig. 4.8 b kan du se resultatet av at brukeren har byttet til en annen diagramvisning.

"Viser grafisk informasjon i Delphi"
Temaplan:
1. Grafiske utdatametoder
informasjon i Delphi.
2. Vis bilder.
3. Geometrisk display
tall.

1. Metoder for å vise grafisk informasjon.
Det er flere måter i Delphi
utgang av grafisk informasjon:
Utgang av pre-prepared
bilder (bildekomponenter,
Form);
Bygge grafer og diagrammer
(Diagramkomponent, etc.);
Bildebehandling
programmatisk (objekt
Lerret).

2. Vis bilder.
Viser bilder ved hjelp av
Vi så på Bilde-komponenten i
et av de tidligere emnene.
Her skal vi se på et eksempel
implementering av enkel animasjon
ved periodisk endring
viste bilde i
Bildekomponenter.
Gå til eksempel.


Visning av protozoer
geometriske former på skjemaet
gir Shape-komponenten.

3. Visning av geometriske former.
Grunnleggende egenskaper for Shape-komponenten:
Børste
Penn
Form
Farge (.Color) og stil (.Style) for
fyller figuren.
Farge (.Color), stil (.Style), bredde
(.Bredde) og utgangsmetode (.Mode) av linjer
tall.
Type geometrisk figur.

3. Visning av geometriske former.
Fra flere Shape-komponenter
Du kan lage enkle tegninger.
Programmatisk endring av posisjon
(.Left, .Top) størrelse (.Width, .Height) og
farge (Brush.Color) på Shape-komponenter
på tegningen er det mulig å implementere
elementer av enkel animasjon.
Tenk på et eksempel.

4. Konstruksjon av grafer og diagrammer.
Diagrammer er for
mer visuell representasjon
rekker av numeriske data, deres
visuell visning og analyse.
Eksempel.
For å lage diagrammer i Delphi
det er flere komponenter
en av dem er diagramkomponenten (seksjon
TeeChart Std).

4. Konstruksjon av grafer og diagrammer.
Visning av diagramkomponenten etter den
Innstillinger på skjemaet:

4. Konstruksjon av grafer og diagrammer.
I tillegg til objektinspektøren, tilgang til
egenskapene til Chart-komponenten kan være
få ved å åpne et spesielt vindu
dialog (høyre knapp på komponenten \
Rediger diagram...)
Legg til
dataserie
Endre type
diagrammer

4. Konstruksjon av grafer og diagrammer.
Velge en diagramtype:

4. Konstruksjon av grafer og diagrammer.
Stille inn egenskaper for koordinatakser
(Akser):

4. Konstruksjon av grafer og diagrammer.
Visningsdata er vanligvis
overført til Chart programmatisk,
eksempel:
Series1.Clear; (klar serie)
for i:=1 til N do
Serie1.addxy(i, A[i], '', clGrønn);
Verdi etter
X-aksen
Verdi etter
Y-aksen
Signatur
X-aksen
Datafarge
på diagrammet
Tenk på et eksempel på konstruksjon
graf for funksjonen y = Sin(x)

Lengre:
Laboratoriearbeid № 13.1.
"Viser bilder og geometrisk
figurer, deres animasjon."
Trening:
1) Utvikle en applikasjon for å implementere
enkleste animasjonen etter periodisk
endrer det viste bildet inn
Bildekomponenter. (Antall bilder er ikke
mindre enn tre, velg bilder
på egenhånd).

Trening:
2) Kom på og tegn et bilde fra
Form komponenter. Programmatisk
endre posisjon, størrelse eller farge
Form komponenter i en tegning
implementere elementene i de enkleste
animasjon.

Lengre:
Laboratoriearbeid nr. 13.2.
"Bygge grafer og diagrammer."
Trening:
1) Endre applikasjonen fra
laboratoriearbeid nr. 9 (Vis
data i tabellen). Legg til en mulighet
viser noen data fra en tabell
på et histogram eller sektordiagram.
2) Konstruer en graf av den gitte funksjonen.


Topp