Komponent for visning av grafisk informasjon i delphi. Bruke Delphis grafikkfunksjoner

Emne :
Formål med laboratoriearbeid Delphi.

Elevene må lære:

  • Lag grafer

Teoretisk del

Piktogram Navn Side Hensikt
Bilde Ytterligere
Form Ytterligere
DrawGrid

(bildetabell)

Ytterligere
Diagram

(diagrammer og grafer)

Ytterligere
PaintBox

(tegnevindu)

System

Form Børste

Bilde:

Diagram:

Metode Klar

Metode Legg til

Metode AddXY

PaintBox:

Trening 1

Oppgave 2

Oppgave 3

med PaintBox1, lerret gjør

Brush.Color:= clRed;

Pen.Farge:= clGrønn;

Pen.Style:= psDash;

Penn.Farge:= clRød;

Forklaring:

Trening 4

Var i:heltall;

Series1.Clear;

for i:=0 til 22 do

Serie 1.AddXY(i*0.29.10*synd(i*0,29),",clgrønn);, Hvor i*0,29 (AXValue) dette er et argument og 10* synd(i*0,29) (AY-verdi)

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

Trening 5

med ComboBox1 begynner

Items:=Skjerm.Fonter;

  1. Lagre og kjør prosjektet.
  1. Oppdrag for arbeid.
  2. Lim inn koden du skrev
  3. Konklusjon om utført arbeid. Emne : Bruk av grafikkfunksjoner.

    Formål med laboratoriearbeid– Bli kjent med grafikkmulighetene Delphi.

    Elevene må lære:

    • Lag noen grafiske ting J
    • Bruk grafikkfunksjoner
    • Bruk grafikkfunksjoner
    • Lag grafer

    Teoretisk del

    Delphi lar deg utvikle applikasjoner som kan vise grafikk: diagrammer, tegninger, illustrasjoner. For å vise grafisk informasjon, tilbyr Delphi-biblioteket komponenter, listen over disse er gitt i følgende tabell:

    Piktogram Navn Side Hensikt
    Bilde Ytterligere Brukes til å vise grafikk: ikoner, punktgrafikk og metafiler
    Form Ytterligere Brukes til å konstruere geometriske primitiver
    DrawGrid

    (bildetabell)

    Ytterligere Brukes til å lage en tabell i applikasjonen som kan inneholde grafikk
    Diagram

    (diagrammer og grafer)

    Ytterligere Brukes til å lage diagrammer og grafer
    PaintBox

    (tegnevindu)

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

    I tillegg kan du vise og legge inn grafisk informasjon på overflaten til enhver vinduskomponent som har Canvas-egenskapen. Tegningene som lages når applikasjonen kjører, kan enten være stillestående eller animerte.

    Form : kan kun betinget klassifiseres som et middel for å vise grafisk informasjon, siden det ganske enkelt representerer ulike geometriske former, skyggelagt tilsvarende. Hovedegenskapen til denne komponenten er Shape, som kan ta verdier Børste(pensel) – denne egenskapen er et objekt av typen TBrush som har en rekke underegenskaper, spesielt: fargen (Brush.Color) og stilen (Brush.Style) til formfyllet. Den tredje spesifikke egenskapen til Shape-komponenten er Pen, som bestemmer linjestilen.

    Bilde: hovedegenskaper: Bilde – ansvarlig for innlasting av bildet, Strekk – ansvarlig for størrelsen på bildet i bildekomponenten, AutoSize – ansvarlig for størrelsen på komponenten bildet ble lastet inn i, tatt i betraktning bildestørrelsen.

    Diagram: For å angi de viste verdiene, må du bruke seriemetoder. La oss se på tre av dem.

    Metode Klar sletter en serie med tidligere innlagte data.

    Metode Legg til: – Legg til (Konst AVverdi: Dobbel; Konst ALabel: String; AFarge: TColor)

    lar deg legge til et nytt punkt i diagrammet. AValue-parameteren tilsvarer tilleggsverdien til funksjonen, og verdien til funksjonsargumentet fylles ut automatisk, så den trenger ikke spesifiseres, ALabel-parameteren er navnet som vil vises på diagrammet og i forklaringen , AColor er fargen. ALabel-parameteren er valgfri, den kan settes tom: ".

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

    lar deg legge til et nytt punkt i funksjonsgrafen. Parametrene AXValue og AYValue tilsvarer argumentet og funksjonen. ALabel- og AColor-parametrene er de samme som i Add-metoden.

    PaintBox: ligger på systemsiden. Det er et enkelt vindu med en disposisjon hvor du kan tegne vilkårlige bilder. Grafiske verktøy finnes i egenskapene Font, Brush og Pen. Lerretet er inneholdt i Canvas-egenskapen til komponenten. Selve tegningen er programmert i hendelsesbehandleren onPaint.

    Trening 1

    1. Lag et program som introduserer deg til bildekomponenten. Det er nødvendig å plassere følgende komponenter: Label, Image, BitBtn, Button. Logg som i bildet og last opp et hvilket som helst bilde. Juster komponentene slik at i Bilde1 passer bildet innenfor rammene, og i Bilde2 stemmer bildet overens med størrelsen. Lag verktøytips når du holder musepekeren over hvert bilde, Hint-egenskapen er ansvarlig for verktøytips, for å vise må du skrive inn tekst og aktivere hint i ShowHint-egenskapen.

    Oppgave 2

    1. Øk størrelsen på skjemaet og legg til komponenter: Shape, Label. Skilt.
    2. Bruk stiler på hver Shape-komponent i henhold til bildet:

    Oppgave 3

    1. La oss for eksempel plassere PaintBox-komponenten på skjemaet. onPaint-behandler:

    med PaintBox1, lerret gjør

    Brush.Color:= clRed;

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

    Pen.Farge:= clGrønn;

    Pen.Style:= psDash;

    Rektangel(120,60,Bredde,Høyde);

    Penn.Farge:= clRød;

    Polyline();

    TextOut(75,20,'Teksten din kan være her!');

    Forklaring: Den første linjen setter fyllfargen: Brush.Color:= clRed; Den andre tegner en del av ellipsen: Pai(12,100,140,280,12,100,140,280); Følgende linjer spesifiserer pennens parametere (hva slags kantlinje formene vil ha), bredde, farge og linjestil: Pen.Width:= 4; Pen.Farge:= clGrønn; Pen.Style:= psDash; Men i dette tilfellet vil vi se én heltrukket linje, siden hvis tykkelsen er mer enn én piksel, vil linjestilen være psSolid (solid). Følgende linje er ansvarlig for å tegne kvadratet: Rektangel(120,60,Bredde,Høyde); Den røde stjernen tegnes av følgende kommando: Polyline(); Den siste linjen er ansvarlig for å vise teksten: TextOut(75,20,'Teksten din kan være her!');

    Trening 4

    1. Lag et program som bygger en gitt graf av funksjonen y=10*sin(x)

    1. Forstørr skjemaet og plasser TСhart-komponenten fra tilleggsfanen på den, og plasser knappen Button, Label-komponenten. Strekk den nye TСharten til en størrelse som er praktisk for utvikling.
    2. Gå til grafeditoren ved å dobbeltklikke på komponenten. Redigere og tilpasse utseendet til serien. For å gjøre dette, klikk Legg til og velg Linjegraftypen og klikk OK. For å endre tittelen, klikk på Tittel og skriv inn formelen y=10*sin(x).
    3. Skriv koden for å tegne en graf i OnClick-hendelsen til Button-komponenten:

    Var i:heltall;

    Series1.Clear;

    for i:=0 til 22 do

    Serie1.AddXY(i*0.29,10*sin(i*0.29),",clGrønn);

    Forklaring: Metode Series1.Clear; sletter serien fra tidligere innlagte data slik at det ikke er noen gamle verdier ved oppdatering. For å tegne en graf trengs det verdier, i vårt tilfelle 22 verdier, der grafen er tegnet av funksjonen Serie 1.AddXY(i*0.29.10*synd(i*0,29),",clgrønn);, Hvor i*0,29 (AXValue) dette er et argument og 10* synd(i*0,29) (AY-verdi) verdien av funksjonsberegningen, ” (ALabel) navnet som vil bli vist på diagrammet og i forklaringen kan stå tomt, og clGreen (AColor) – fargen på linjene.

    1. Fullfør følgende oppgave uavhengig: tegne en graf over funksjoner
    2. y=3,2*(14*x)
    3. y=sin(x)
    4. y=cos(x)
    5. y=x 2 +cos(x)
    6. y=x 2 -4,5*4

    Trening 5

    1. Lag et program som lar deg se systemskrifttegn.
    2. Forstørr skjemaet, plasser DrawGrid1, ComboBox1, Label. Angi følgende egenskaper for DrawGrid1-komponenten: RowCount=7, ColCount=32, FixedCols=0, FixedRows=0, DafaultColWidth=20, DefaultRowHeight=20.
    3. For å få innholdet i hver celle tegnet på nytt, lag en OnDrawCell-hendelsesbehandler for DrawGrid1-komponenten. For å vise skrifttegn bruker vi Canvas-egenskapen til DrawGrid1-komponenten. Vi trenger direkte TextRect-metoden til Canvas-egenskapen. Denne metoden brukes til å vise tekstinformasjon i en bestemt celle. Hendelsesbehandleren vil se slik ut:

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

    1. Lagre prosjektet. Sørg for at tabellceller viser tegn fra systemets standardfont.
    2. For å velge skrift, bruker vi ComboBox1-komponenten. For at denne komponenten skal inneholde alle skjermfonter, må du legge dem til i listen når du oppretter skjemaet. Navnene på alle skjermfonter kan bli funnet ved å bruke den globale skjermvariabelen av typen TScreen. Denne variabelen legges automatisk til i alle Delphi-applikasjoner. Skjermvariabelen inneholder informasjon om gjeldende tilstand til applikasjonsskjermen: navn på skjemaer og datamoduler som brukes av applikasjonen; data om det aktive skjemaet og komponentene som brukes av dette skjemaet; størrelse og oppløsning på skjermen som brukes; informasjon om markører og fonter som er tilgjengelige for applikasjonen. Informasjon om skriftene som er tilgjengelige for applikasjonen, finnes i Font-egenskapen, som tilhører Screen-variabelen.
    3. Opprett en onCreate hendelsesbehandler for skjemaet og legg til følgende utsagn til det:

    med ComboBox1 begynner

    Items:=Skjerm.Fonter;

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

    1. Lagre og kjør prosjektet. DrawGrid1-komponenten inneholder tegn fra fonten installert i ComboBox1.
    2. For å binde skriftnavnet til DrawGrid1 og ComboBox1, la oss lage en annen hendelsesbehandler:

    DrawGrid1.Font.Name:=ComboBox1.Text;

    1. Lagre og kjør prosjektet.
    1. Antall, emne, formål med laboratoriearbeid.
    2. Oppdrag for arbeid.
    3. Beskrivelse av input, mellomliggende og resulterende data som indikerer deres type.
    4. Programmer på et programmeringsspråk.
    5. Resultat av programkjøring (Inndata og mottatte data)
    6. Lim inn koden du skrev
    7. Konklusjon om utført arbeid.

Visual Component Library (VCL) Delphi gir oss følgende visuelle komponenter for visning av grafisk informasjon: Bilde (bilde), PaintBox (vindu for tegning), DrawGrid (bildetabell), Chart (diagrammer og grafer), Animate (utdatavideoklipp). ), samt Form. Disse komponentene har en Canvas-egenskap (diskutert ovenfor) som gir tilgang til hver piksel. Selvfølgelig trenger du ikke tegne piksel for piksel for å jobbe med grafikk i Delphi; Delphi-systemet gir kraftige verktøy for å jobbe med grafikk.

La oss se nærmere på komponentene ovenfor:

Bildekomponent

Er et objekt av TImage-klassen. Brukes til å vise bilder lest fra grafikkfiler. Viser som standard bilder presentert i *.bmp-format på overflaten av skjemaet. For å sende ut bilder i jpg-format, må du inkludere JPEG-modulen i bruksdirektivet. Ligger i tilleggsfanen på komponentpaletten.

Etter å ha plassert bildekomponenten på skjemaet, tar den form av et valgt rektangulært område.

Figur 9 - Bildekomponent på skjemaet

For å åpne en dialogboks for å velge ønsket bilde, må du gjøre følgende ved å bruke objektinspektøren. For å gjøre dette, finn bildeegenskapen og klikk på de tre prikkene til venstre for den. Bilderedigeringsvinduet åpnes og velg Last i det; i vinduet som åpnes velger du bildefilen.

Dette kan også gjøres programmatisk ved å kalle LoadFromFile-metoden til Picture-egenskapen:

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

der name_pic.jpeg er filnavnet.

Tabell 8 - Grunnleggende egenskaper for bildekomponenten

Eiendom

Beskrivelse

Bildet vises i komponentfeltet

Komponentdimensjoner. Hvis disse dimensjonene er mindre enn illustrasjonsstørrelsen, og egenskapene Stretch, AutoSize og Proporsjonal er satt til False, vises en del av bildet

Lar deg skalere bilder automatisk uten forvrengning. For å utføre skalering må AutoSize-egenskapen settes til False

Lar deg automatisk skalere (krympe eller strekke) et bilde for å passe størrelsen på bildekomponenten. Hvis størrelsen på komponenten ikke er proporsjonal med størrelsen på bildet, vil bildet bli forvrengt

Lar deg endre størrelsen på en komponent automatisk slik at den passer til bildestørrelsen

Lar deg bestemme den horisontale posisjonen til bildet i feltet til bildekomponenten hvis bredden på bildet er mindre enn bredden på komponenten.

Overflate for visning av grafikk

Angir en gjennomsiktig bildebakgrunnsfarge

Eksempel 1: Skriv et program for å vise bilder ved hjelp av bildekomponenten. Programmet må ha følgende funksjoner:

  • · se bilder i mappen;
  • · se bildet i full størrelse eller i formatet som passer best for vindusstørrelsen;
  • · administrere bildefiler, samt skrive ut, lagre, slette og redigere bilder;
  • · om nødvendig, åpne bildet i et redigeringsprogram;

Figur 10 - Programvindu før det starter

Opprette et prosjekt:

  • 1. Opprett en mappe for programfilene og start Delphis integrerte utviklingsmiljø.
  • 2. Legg til komponenter i skjemaet:

Først vil vi plassere bildekomponenten på skjemaet, hovedkomponenten som vi må jobbe med. I tillegg til dette trenger vi følgende komponenter:

  • · ScrollBox Det er nødvendig når bildet er i full størrelsesmodus, går utover bildet. Vi tildeler verdien alClient til dens Aling-egenskap slik at dimensjonene endres proporsjonalt med størrelsen på vinduet. Og plasser Image-komponenten på den;
  • · Vi vil også legge til dialogkomponenter SavePictureDialog og OpenPictureDialog, designet for å lagre og åpne bilder. Vi trenger den første for å kopiere bildet til den valgte katalogen, den andre for å kalle opp dialogen for å åpne en grafikkfil. De er plassert på dialogboksen på komponentpaletten. Fra denne siden trenger vi også PrintDialog-komponenten, som vi må kalle dialogen for å velge en skriver for utskrift.
  • · Legg til MainMenu for å legge til en hovedmeny til programmet og XPManifest for en mer fargerik design
  • · Vi må også lagre navnene på bildene som ligger i arbeidskatalogen et sted. ListBox-komponenten er praktisk for disse formålene; den kan skjules når du behandler Create-hendelsen til Form1.
  • · For å plassere navigasjonsknapper og enkelt jobbe med dem, vil vi legge til et Veil-panel, der vi plasserer disse knappene (Forrige bilde, Neste bilde, True size, Tilpass til størrelse, Slett, Kopier til, Skriv ut, Rediger). SpeedButton er valgt som en komponent for dem.
  • · Legg til en tidtaker for å fange tastetrykk "Venstre" (forrige bilde), "Høyre" (neste bilde) og "Del"-tasten (sletter bilde).
  • · Og en komponent til - ProgressBar, som viser prosessen med å laste inn store *.Jpg-filer.
  • 3. Skriv kode for å behandle knappen klikk-hendelsen (Forrige bilde, Neste bilde, Sann størrelse, Tilpass til størrelse, Slett, Kopier til, Skriv ut, Rediger). Skriv kode for å behandle hendelsen med å klikke på hovedmenyen menyelementer (Avslutt, Åpne, Lukk, Opprett).
  • 4. Angi de første innstillingene for å lage skjemaet. Dobbeltklikk på en tom plass i skjemaet og skriv prosedyrekodeprosedyren TForm1.FormCreate(Sender:TObject), se modulkoden i vedlegg 1.
  • 5. Skriv prosedyrer av følgende type:

prosedyre FindFileInFolder(bane, ext: streng);

Denne prosedyren skanner banemappen for filer ved hjelp av ext-masken.

Den fullstendige listen over programmodulkoden finner du i vedlegg 1 (Programoversikt 3).

  • 1. List opp egenskapene til bildekomponenten.
  • 2. Hvilken klasse er bildekomponenten et objekt av?
  • 3. 3. Hvilken filtype støtter Image-komponenten som standard?
  • 4. 4. List opp hovedegenskapene til bildekomponenten.
  • 5. 5. Hvilken egenskap lagrer bildet av Image-komponenten?

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:Tbørste – børste for å fylle 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 av 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 forhåndsbygde komponenter for å forbedre brukeropplevelsen. 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 det brukervalgte grafiske bildet inn i Image1-komponenten slik at bildet opptar hele området til Image-komponenten.

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 dette, bruk Randomize random number generator 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) inni 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;

Beskrivelse av presentasjonen ved individuelle lysbilder:

1 lysbilde

Lysbildebeskrivelse:

2 lysbilde

Lysbildebeskrivelse:

Delphis visuelle programmeringsmiljø, som Windows, støtter et grafisk brukergrensesnitt (GDI - Graphic Delphi Interface). I Delphi er det to måter å vise grafisk informasjon på: vise forhåndsforberedte bilder; tegning fra programmet.

3 lysbilde

Lysbildebeskrivelse:

Den første metoden er basert på bruk av bilde- og formkomponentene. Du kan bruke et ferdig bilde (ikon) eller lage dem selv ved hjelp av bilderedigering. Den andre måten er å generere bilder programmatisk ved å bruke Canvas-objektet.

4 lysbilde

Lysbildebeskrivelse:

Delphi disponerer en spesiell gjenstand, som er stylet som Canvas-eiendommen. Den er kun tilgjengelig mens applikasjonen kjører, så den kan kun kontrolleres fra programmet ved å skrive den nødvendige koden i Object Pascal. Hvis et objekt har Canvas-egenskapen, kan du tegne på overflaten. De best egnede kandidatene for denne rollen er selve skjemaet og den spesielle PaintBox-komponenten.

5 lysbilde

Lysbildebeskrivelse:

Lerretsobjekt Egenskaper: Penn – egenskap for å tegne linjer og kanter av geometriske former. Pennen følger kommandoene til den grafiske markøren og har i sin tur sine egne nestede egenskaper: Farge – bestemmer fargen på linjen (svart som standard); Modus – tegnestil (har mange betydninger som ikke er gitt her); Stil – linjestil, som kan ha følgende verdier: рsSolid – solid (standard); рsDosh – stiplet; psDot – prikkete; рsDoshDot – stiplet linje (og andre egenskaper); Widh – linjetykkelse (standard 1 piksel);

6 lysbilde

Lysbildebeskrivelse:

Pensel – en egenskap for å fylle former med følgende nestede egenskaper: Farge – penselfarge (hvit som standard); Stil – børstemønster, som kan ha følgende verdier: bsClear – solid farge; bsHorisontal – horisontale linjer; bsVertikal – vertikale linjer; bsFDiagonal – venstre diagonale linjer; bsBDiagonal – høyre diagonale linjer; bsCross – celle; bsDiagCross – skrå celle;

7 lysbilde

Lysbildebeskrivelse:

Font – en egenskap for å vise tekst som har følgende nestede egenskaper: Farge – tegnfarge; Høyde – skrifthøyde i piksler; Navn – skriftnavn; Størrelse – skriftstørrelse; Stil – skriftstil, som kan ha følgende verdier: fsFet – fet; fsItalic – kursiv; fsUnderstrek – understreket; fsStrikeOut – krysset ut;

8 lysbilde

Lysbildebeskrivelse:

PenPos (Pen Position) – en egenskap for å lagre gjeldende tegneposisjon (bestemmer posisjonen til pennen i tegneområdet på et gitt tidspunkt); Piksler – en matriseegenskap for å skrive og lese koordinatene til individuelle punkter i tegneområdet ("lerret").

Lysbilde 9

Lysbildebeskrivelse:

Metoder for Canvas-objektet Flytt til(x,y: heltall) – flytter pennen fra gjeldende posisjon til et punkt med de angitte x, y-koordinatene uten å tegne en linje; LineTo(x.y: heltall) - flytter pennen fra gjeldende posisjon til et punkt med de gitte koordinatene x, y, tegner en linje; Arc(x1, y1, x2, y2, x3, y3, x4, y4: heltall) – tegner buen til en ellipse innskrevet i et rektangel med koordinater (x1, y1) og (x2, y2). Buen bestemmes av radiene til ellipsen som går gjennom punktene (x3,y3) og (x4,y4);

10 lysbilde

Lysbildebeskrivelse:

Akkord(x1, y1, x2, y2, x3, y3, x4, y4: heltall) – tegner en akkord av en ellipse i henhold til beskrivelsen gitt for Arc-metoden; Ellipse(x1, y1, x2, y2: heltall) – tegner en ellipse innskrevet i et rektangel med øvre venstre hjørne ved punktet (x1, y1) og nedre høyre hjørne ved punktet (x2, y2); FillRect(Rect (x1, y1, x2, y2: heltall)) – fyller rektangelet med fargen spesifisert i gjeldende pensel. Bruker Rect-funksjonen, som representerer et rektangel ved de gitte koordinatene;

11 lysbilde

Lysbildebeskrivelse:

FloodFill(x,y: heltall; Farge: TColor; FillStyle: TFillStyle) – fylling med gjeldende farge spesifisert i Brush-egenskapen: med FillStyle=fsBorder – et lukket område fra punktet med koordinatene x, y til kantlinjen definert av Farge; with FillStyle=fsSurface – den delen av overflaten som har fargefargen; Pie(x1, y1, x2, y2, x3, y3, x4, y4: heltall) – tegner en sektor av en ellipse innskrevet i et rektangel med koordinater (x1, y1) og (x2, y2). Sektoren er definert av to ellipseradier som går gjennom punktene (x3, y3) og (x4, y4);

12 lysbilde

Lysbildebeskrivelse:

Polyline (Points: array of TPoint) – tegner en polyline, og kobler sekvensielt sammen punktene til Points-arrayen; Polygon (Points: array of TPoint) – tegner polygoner ved å koble sammen punkter i Points-arrayen sekvensielt. Den skiller seg fra Polyline-metoden ved at den automatisk kobler slutten av polyline til begynnelsen; Rektangel (x1, y1, x2, y2: heltall) – tegner et rektangel med øvre venstre hjørne ved punktet (x1, y1) og nedre høyre hjørne ved punktet (x2, y2);

Lysbilde 13

Lysbildebeskrivelse:

Retresh – metoden kalles når det er nødvendig å tegne bildet på nytt; RoundRect (x1, y1, x2, y2, x3, y3: heltall) – tegner et rektangel med avrundede hjørner. Hjørnene er tegnet som firedeler av en ellipse med bredden x3 og høyden y3; TextOut (x, y:integer, Text:String) – gir ut teksten som er spesifisert i tekstparameteren. Teksten passer inn i et rektangel hvis øvre venstre hjørne har x, y-koordinater.

Lysbilde 2

"Vise grafisk informasjon i Delphi" Emneoversikt: Metoder for å vise grafisk informasjon i Delphi. Vis bilder. Visning av geometriske former. Konstruksjon av grafer og diagrammer.

Lysbilde 3

1. Metoder for å vise grafisk informasjon. I Delphi er det flere måter å vise grafisk informasjon på: Output of pre-prepared images (Image, Shape-komponenter); Konstruksjon av grafer og diagrammer (diagramkomponent, etc.); Genererer bilder programmatisk (Canvas-objekt).

Lysbilde 4

Vis bilder. Vi diskuterte visning av bilder ved hjelp av bildekomponenten i et av de forrige emnene. Her skal vi se på et eksempel på implementering av en enkel animasjon ved å periodisk endre det viste bildet i bildekomponentene. Gå til eksempel.

Lysbilde 5

Visning av geometriske former. Visningen av enkle geometriske former på et skjema leveres av Shape-komponenten.

Lysbilde 6

Visning av geometriske former. Grunnleggende egenskaper for Shape-komponenten:

Lysbilde 7

Visning av geometriske former. Du kan lage enkle design fra flere Shape-komponenter. Ved å programmatisk endre posisjonen (.Left, .Top), størrelse (.Width, .Height) og farge (Brush.Color) til Shape-komponentene i tegningen, kan du implementere elementer i den enkleste animasjonen. Tenk på et eksempel.

Lysbilde 8

Konstruksjon av grafer og diagrammer. Diagrammer er designet for en mer visuell representasjon av numeriske datamatriser, deres visuelle visning og analyse. Eksempel. Det er flere komponenter for å lage diagrammer i Delphi, en av dem er Chart-komponenten (seksjon TeeChart Std).

Lysbilde 9

Konstruksjon av grafer og diagrammer. Visning av diagramkomponenten etter å ha installert den på skjemaet:

Lysbilde 10

Konstruksjon av grafer og diagrammer. I tillegg til "Objektinspektøren", kan du få tilgang til egenskapene til diagramkomponenten ved å åpne en spesiell dialogboks (høyre knapp på komponenten \ Rediger diagram...) Legg til dataserie Endre diagramtype

Lysbilde 11

Konstruksjon av grafer og diagrammer. Velge en diagramtype:

Lysbilde 12

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

Lysbilde 13

Konstruksjon av grafer og diagrammer. Dataene som skal vises sendes vanligvis til diagrammet programmatisk, for eksempel: Series1.Clear; (slett serie) for i:=1 til N do Series1.addxy(i, A[i], ‘’, clGrønn); X-akse verdi Y-akse verdi X-akse etikett Farge på data på diagrammet Tenk på et eksempel på plotting av funksjonen y = Sin(x)

Lysbilde 14

Neste: Laboratoriearbeid nr. 13.1. "Visning av bilder og geometriske former, deres animasjon." Oppgave: 1) Utvikle en applikasjon for å implementere enkel animasjon ved periodisk å endre det viste bildet i bildekomponentene. (Antall bilder er minst tre, velg bildene selv).

Lysbilde 15

Oppgave: 2) Kom på og tegn et bilde ved hjelp av Shape-komponenter. Ved å programmatisk endre posisjonen, størrelsen eller fargen til Shape-komponenter i en tegning, kan du implementere elementer av enkel animasjon.

Lysbilde 16

Neste: Laboratoriearbeid nr. 12.2. "Bygge grafer og diagrammer." Oppgave: Endre søknaden fra laboratoriearbeid nr. 9 (Vise data i tabell). Legg til muligheten til å vise noen data fra en tabell i et histogram eller et sektordiagram. 2) Konstruer en graf av den gitte funksjonen.

Se alle lysbildene