Finestre.  Virus.  I Quaderni.  Internet.  ufficio.  Utilità.  Autisti

Visual Component Library (VCL) Delphi per la visualizzazione informazioni grafiche ci fornisce i seguenti componenti visivi: Image (immagine), PaintBox (finestra di disegno), DrawGrid (tabella immagine), Chart (diagrammi e grafici), Animate (videoclip di output) e Form. Questi componenti hanno una proprietà Canvas (descritta sopra) che dà accesso a ciascun pixel. Naturalmente, non è necessario disegnare pixel per pixel per lavorare con la grafica in Delphi, il sistema Delphi fornisce potenti strumenti per lavorare con la grafica.

Diamo un'occhiata più da vicino ai componenti di cui sopra:

Componente immagine (immagine)

È un oggetto della classe TImage. Utilizzato per visualizzare immagini lette da file grafici. Per impostazione predefinita, visualizza sulla superficie delle immagini del modulo presentate in formato *.bmp. Per visualizzare le immagini in formato jpg, è necessario includere il modulo JPEG nella direttiva uses. Si trova nella scheda Addizionali della Component Palette.

Dopo aver posizionato il componente Immagine sul modulo, assume la forma di un'area rettangolare selezionata.

Figura 9 - Componente immagine sul form

Per aprire una finestra di dialogo per selezionare l'immagine desiderata, procedere come segue utilizzando l'Ispettore oggetto. Per fare ciò, trova la proprietà Picture e fai clic sui tre punti a sinistra di essa. Si apre la finestra Picture Editor e seleziona Carica al suo interno, nella finestra che si apre, seleziona il file immagine.

Questa operazione può essere eseguita anche a livello di codice chiamando il metodo LoadFromFile della proprietà Picture:

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

dove nome_pic.jpeg è il nome del file.

Tabella 8 - Proprietà principali del componente Immagine

Proprietà

Descrizione

Immagine visualizzata nel campo del componente

Dimensioni dei componenti. Se queste dimensioni sono inferiori a quelle dell'illustrazione e le proprietà Stretch, AutoSize e Proportional sono impostate su False, viene visualizzata parte dell'immagine

Consente di ridimensionare automaticamente le immagini senza distorsioni. Per eseguire il ridimensionamento, il valore della proprietà AutoSize deve essere False

Consente di ridimensionare (comprimere o allungare) automaticamente l'immagine in base alle dimensioni del componente Immagine. Se la dimensione del componente non è proporzionale alla dimensione dell'immagine, l'immagine risulterà distorta.

Consente di ridimensionare automaticamente un componente in modo che corrisponda alla dimensione dell'immagine

Consente di determinare la posizione dell'immagine nel campo del componente Immagine orizzontalmente, se la larghezza dell'immagine è inferiore alla larghezza del componente.

Superficie per la visualizzazione della grafica

Specifica il colore di sfondo trasparente di un'immagine

Esempio 1: scrivere un visualizzatore di immagini utilizzando il componente Immagine. Il programma deve avere le seguenti caratteristiche:

  • visualizzare le immagini in una cartella;
  • Visualizzare l'immagine a grandezza naturale o nel formato più adatto alle dimensioni della finestra;
  • · gestire i file immagine, nonché stampare, salvare, eliminare e modificare le immagini;
  • se necessario, apri l'immagine nel programma di editing;

Figura 10 - Finestra del programma prima del suo avvio

Creazione del progetto:

  • 1. Creare una cartella per i file del programma e avviare l'ambiente di sviluppo integrato Delphi.
  • 2. Aggiungi componenti al modulo:

Per prima cosa posizioneremo sul form il componente Immagine, il componente principale con cui dovremo lavorare. Oltre a ciò, abbiamo bisogno dei seguenti componenti:

  • · ScrollBox E' necessario quando in modalità full-size l'immagine va oltre l'Image. Assegniamo il valore alClient alla sua proprietà Aling in modo che le sue dimensioni cambino proporzionalmente alla dimensione della finestra. E posizioniamo il componente Immagine su di esso;
  • · Aggiungeremo anche i componenti di dialogo SavePictureDialog e OpenPictureDialog per il salvataggio e l'apertura delle immagini. Abbiamo bisogno del primo per copiare l'immagine nella directory selezionata, il secondo - per chiamare la finestra di dialogo aperta file grafico. Si trovano nella pagina Dialogs della Component Palette. Da questa pagina, abbiamo anche bisogno del componente PrintDialog, che ci serve per richiamare la finestra di selezione della stampante per la stampa.
  • Aggiungiamo MainMenu per aggiungere il menu principale al programma e XPManifest per un design più colorato
  • · Abbiamo anche bisogno di un posto dove memorizzare i nomi delle immagini che sono nella directory di lavoro. Per questi scopi è conveniente il componente ListBox, che può essere nascosto durante l'elaborazione dell'evento Create del form Form1.
  • · Per posizionare i pulsanti di navigazione e lavorare comodamente con essi, aggiungiamo il pannello Velo, sul quale posizioneremo questi pulsanti (Immagine precedente, Immagine successiva, Dimensione reale, Adatta a dimensione, Elimina, Copia in, Stampa, Modifica). SpeedButton è selezionato come componente per loro.
  • · Aggiungere un timer per catturare premendo i tasti "Sinistra" (immagine precedente), "Destra" (immagine successiva) e il tasto "Del" (cancella immagine).
  • · E un altro componente - ProgressBar, che visualizza il processo di caricamento di file *.Jpg di grandi dimensioni.
  • 3. Scrivere il codice per la gestione dell'evento di clic del pulsante (Immagine precedente, Immagine successiva, Dimensione reale, Adatta a dimensione, Elimina, Copia in, Stampa, Modifica). Scrivere il codice per gestire l'evento di clic sulle voci del menu MainMenu (Esci, Apri, Chiudi, Crea).
  • 4. Impostare le impostazioni iniziali per la creazione del modulo. Fare doppio clic su un'area vuota del modulo e scrivere il codice procedimento procedurale TForm1.FormCreate(Sender:TObject), vedere il codice del modulo nell'Appendice 1.
  • 5. Scrivere procedure della seguente forma:

procedura FindFileInFolder(percorso, ext: stringa);

Questa procedura esegue la scansione della cartella del percorso per i file con la maschera ext.

Un elenco completo dei codici del modulo di programma si trova nell'Appendice 1 (Elenco programmi 3).

  • 1. Elenca le funzionalità del componente Immagine.
  • 2. Quale oggetto di classe è il componente Immagine?
  • 3. 3. Quale tipo di file supporta il componente Immagine per impostazione predefinita?
  • 4. 4. Elenca le proprietà principali del componente Immagine.
  • 5. 5. Quale proprietà memorizza l'immagine del componente Immagine?

LAVORO DI LABORATORIO

SOGGETTO: « Grafica dentroDelfi- costruzione del più semplice
forme geometriche"

Brevi informazioni dalla teoria

Delphi fornisce allo sviluppatore tre modi per visualizzare la grafica:

    plottaggio mentre il programma è in esecuzione

    utilizzo di grafica pre-creata

    creazione di immagini utilizzando componenti grafici

Per il plottaggio sono state create classi speciali che forniscono strumenti e metodi per disegnare: gli strumenti sono descritti in tre classi: Tfont, Tpen, Tbrush; l'area di disegno ei metodi sono forniti dalla classe Tcanvas.

ClasseTfont- imposta le caratteristiche del carattere utilizzato per visualizzare il testo sulla tela. Le proprietà della classe sono descritte nella sezione "Proprietà di base disponibili per la maggior parte dei componenti".

Classetpen– imposta le caratteristiche della penna (matita) con cui si disegnano le linee.

Proprietà classe tpen:

colore:Tcolor - colore della linea (nero per impostazione predefinita)

Larghezza:integer – spessore della linea in pixel;

stile = (psSolid, psDash, psDot, psdashDot, psClear) - definisce lo stile della linea (solida, tratteggiata, punteggiata, tratto-punto, invisibile)

ClassePennello– imposta le caratteristiche del pennello utilizzato per dipingere sulle superfici dell'immagine.

Proprietà classe Pennello:

colore:Tcolor - colore del pennello (il valore predefinito è bianco)

stile- ornamento a pennello, può assumere i seguenti valori:

BsSolid - colorazione solida

BsClear - nessun riempimento

BsVertical - linee verticali

BsBdiagonal - linee diagonali a destra

BsDiagCross - cella obliqua

BsOrizzontale- linee orizzontali

BsFdiagonale - linee diagonali a sinistra

BsCross - cell

Classetessuti- definisce la superficie su cui viene posizionata l'immagine creata e gli strumenti con cui viene creata l'immagine: carattere, matita, pennello.

Per impostazione predefinita, l'intera area client del modulo viene utilizzata come area di lavoro (canvas, "canvas") (senza titolo, menu principale e righe di scorrimento del modulo), ma è possibile allocare aree di lavoro più piccole all'interno del modulo utilizzando componenti scatola di vernice O Immagine. L'origine della tela è l'angolo in alto a sinistra dell'area di lavoro, la larghezza dell'area di lavoro è determinata dalla proprietà ClientWidth, altezza - proprietà ClientHeight.

Proprietà classe tessuti:

Tela:Tcanvas - definisce l'area di disegno

Spazzola:Tbrush - pennello per dipingere forme chiuse

Font:Tfont - carattere per la visualizzazione del testo sulla tela

Penna:Tpen - matita (penna) per disegnare

PenPos:Tpoint - la posizione corrente del cursore invisibile sulla tela

Commento : Tipo Tpoint - definito come segue:

Digitare Tpunto = record

Pixel: Tcolor - imposta i colori dei pixel della tela, X, Y - coordinate dei pixel. La proprietà Pixels è utile per tracciare grafici utilizzando punti del colore selezionato.

Metodi principali della classe TCanvas

    procedura Sposta a(x,y:intero); - sposta la penna senza tracciare una linea su un punto con coordinate (x, y).

    procedura LineTo(x,y:intero); - traccia una linea dal punto corrente al punto con coordinate (x, y).

Esempio : Disegna una linea diagonale blu sulla forma dall'angolo in alto a sinistra della forma all'angolo in basso a destra.

Pen.color:= clblu;

Sposta su(0,0); LineTo(ClientWidth, ClientHeight);

    procedura Rettangolo(x1,y1,x2,y2:intero); - disegna un rettangolo: x1, y1 - coordinate dell'angolo in alto a sinistra; x2, y2 - coordinate dell'angolo in basso a destra.

Esempio : Disegna un quadrato pieno di giallo di 60 px al centro della forma.

var Xc,Yc: numero intero; //

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.color:=clgiallo;

Tela.rettangolo(xc-30,Yc-30,xc+30,Yc+30);

    procedura Ellisse(x1,y1,x2,y2:intero); - disegna un'ellisse inscritta in un rettangolo con le coordinate specificate.

Esempio : disegna un'ellisse inscritta nel componente PaintBox.

PaintBox1.Canvas.Pen.Width:=4; // larghezza linea = 4 pixel

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

    procedura Poligono(); - disegna un poligono chiuso dato da un array di coordinate.

Esempio : disegna un rombo pieno che collega i punti medi dei lati della forma

Var Xc,Yc:intero; // formare le coordinate del centro dell'area clienti

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.Color:=Rgb(275,140,70); // arancia colore ombreggiatura

Canvas.Polygon();

FINE;

    procedura Arco(x1,y1,x2,y2,x3,y3,x4,y4:intero); - visualizza un arco di un'ellisse delimitato da un rettangolo (x1, y1, x2, y2). L'arco viene visualizzato da un punto con coordinate (x3,y3) a un punto con coordinate (x4,y4) contro lancetta delle ore.

Esempio : disegna un arco di ellisse che collega il centro del lato superiore del componente
PaintBox con la metà del suo lato destro.

Procedura Tform1.Button1Click(Sender:Tobject);

Var X3,y3,x4,y4: numero intero;

Con PaintBox1 fare

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);

FINE;

    procedura Accordo(x1,y1,x2,y2,x3,y3,x4,y4:intero); - disegna una corda - una linea retta che collega 2 punti dell'ellisse: un punto con coordinate (x3, y3) con un punto (x4, y4).

Esempio : sostituire nell'esempio fornito per il metodo ARC, il metodo Chord e ottenere questo risultato.

    procedura Torta(x1,y1,x2,y2,x3,y3,x4,y4:intero); - disegna un segmento di ellisse che collega il centro dell'ellisse di coordinate (x3,y3) e (x4,y4).

Esempio : presenti nell'esempio dato per il metodo ARC, il metodo PIE e ottieni questo risultato.

    procedura textout(x,y:intero;Testo:stringa); - visualizza la stringa passata nel parametro Text in un rettangolo, il cui angolo superiore sinistro è specificato coordinate x,y. Le caratteristiche del carattere sono impostate dallo strumento Carattere.

Esempio : scrivere il nome del grafo costruito in fondo al form.

Canvas.Font.Height:=20 ; // altezza carattere 20 pixel

Canvas.Font.Color:=clblue;

Canvas.TextOut(10, ClientHeight-24, 'SIN(X) function graph');

Componenti grafici

Delphi offre una serie di componenti pronti all'uso da migliorare interfaccia utente. Questi componenti vengono inseriti nella pagina Aggiuntivo E Sistema tavolozza dei componenti.

ComponenteImmagine(ClasseTempo) – progettato per visualizzare immagini grafiche memorizzate in file esterni con estensioni:

    Ico(icona, pittogramma);

    bmp (bitmap, bitmap);

    Wmf, .emf (metafile);

    Jpg, .jpeg (immagine compressa JPEG).

Principale proprietà :

dimensione dell'auto:boolean - se vero, il componente adatta la sua dimensione alla dimensione dell'immagine caricata; false per impostazione predefinita.

Stirata:boolean - se true, il valore caricato occupa l'intera area del componente; il valore predefinito è falso.

Tela:Tcanvas - Utilizzato per disegnare all'interno del componente in fase di esecuzione.

immagine:Tpicture - Specifica l'immagine inserita nel componente.

Principale metodi classe immagine:

procedura Carica da file(nome file: stringa); - carica un'immagine nel componente da un file denominato Filename.

procedura Salva su file(nome file: stringa); - salva l'immagine dal componente in un file denominato Filename.

Componentescatola di vernice - definisce un'area rettangolare da disegnare. La proprietà principale è Tela, sono disponibili tutti i metodi della classe Tcanvas, non ha proprietà indipendenti.

Esempio : disegna un'ellisse colore giallo L'inscritto nel componente PaintBox1.

Procedura Tform1Button1Click(sender:Tobject);

Con PaintBox1.Canvas fare

Brush.Color:=clgiallo;

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

FINE;

ComponenteBitBtn pulsante bitmap

Il pulsante BitBtn, a differenza di quello standard, può contenere, oltre al nome (Caption), un'immagine specificata dalla proprietà Glifo. Esiste una serie di pulsanti BitBtn standard, con proprietà predefinite (con un'immagine, una didascalia e uno scopo specifici): il tipo di pulsante standard viene selezionato tramite la proprietà Tipo. Tipo=(bkCustom, bkAbort,bkCancel, bkClose...)

Compito numero 1

Crea un'applicazione che contenga due componenti Immagine e 4 pulsanti sulla videata principale ("Carica immagine", "Costruisci forma geometrica", "Cambia colore", "Esci"), e ti permetta di:

a) caricare nel componente Immagine1 un'immagine grafica selezionata dall'utente in modo tale che l'immagine occupi l'intera area del componente Immagine.

b) sotto il componente Immagine1, visualizzare la scritta “Questa è un'immagine da un file.

(per qualsiasi misura delle dimensioni e della posizione del componenteImmagine1 iscrizione deve
essere rigorosamente al di sotto del componente).

c) disegnare una forma geometrica all'interno del componente Image2: un segmento pieno di un'ellisse che collega il centro del componente Image con i punti medi dei lati inferiore e destro del componente Image.

(con qualsiasi modifica delle dimensioni e della posizione del componenteImmagine2, la figura deve essere costruita correttamente, cioè in base all'incarico relativo al componenteImmagine2)

d) cambiare il colore della linea della figura disegnata in Image2 su richiesta dell'utente utilizzando il componente ColorDialog.

Compito numero 2

Crea un'applicazione che ti consenta di posizionare in modo casuale più etichette in un componente Immagine (ad esempio, la parola "Evviva!"). Per implementare, utilizzare un generatore numeri casuali Randomize e la funzione Random.

Le dimensioni del componente Immagine, la parola visualizzata nell'immagine e il numero di parole devono essere inseriti dall'utente.

Compito numero 3

Creare un'applicazione che consenta di selezionare il nome di una forma geometrica dal ListBox e disegnare la forma selezionata nel componente Immagine. Il colore della forma viene selezionato dal componente RadioGroup.

Compito numero 4

Dividi il componente PaintBox1 in 4 parti uguali, dipingi ogni parte con un colore diverso, ad esempio: blu, giallo, verde, rosso.

Accanto a ciascun angolo di PaintBox1, scrivi le coordinate di quell'angolo (rispetto all'origine della forma su cui si trova il componente PaintBox1).

Compito numero 5

CON

selezionare il tipo di figura disegnata dal componente Radiogroup1, il colore di riempimento dal componente Radiogroup2 e disegnare la figura selezionata nel componente Image.

Compito numero 6

Creare un'applicazione che consenta all'utente di impostare le dimensioni del componente PaintBox1 (in pixel).

Dividi il componente PaintBox1 in 2 parti uguali, all'interno di ogni parte disegna un'ellisse riempita con il colore selezionato dall'utente nel ColorDialog.

Compito numero 7

CON creare un'applicazione che ti permetta di:

selezionare il nome della figura geometrica dall'elenco ListBox e disegnare la figura selezionata nel componente Immagine. La forma deve essere riempita con il colore selezionato dall'utente nel componente ColorDialog se Sì è selezionato nel componente RadioGroup.

Compito numero 8

Creare un'applicazione che consenta all'utente di impostare le dimensioni del componente PaintBox1 (in pixel).

Dividi il componente PaintBox1 in 4 parti uguali, all'interno di ogni parte disegna una forma geometrica diversa (ellisse, rombo, triangolo e rettangolo). Il colore di ciascuna forma viene selezionato dall'utente in ColorGrid.

Compito numero 9

selezionare il nome della geometria dal ListBox
forme (ellisse, rombo, rettangolo) e disegnare
la forma selezionata nel componente Immagine. Posizione
forme nel componente Immagine (I quarto, II quarto,

III o IV quarto) e viene selezionato il colore di riempimento della figura
dai componenti RadioGroup.

Compito numero 10

Creare un'applicazione che consenta all'utente di impostare le dimensioni del componente PaintBox1 (in pixel).

Fornisci che la dimensione del lato non può essere testo, non può essere un numero negativo e non può superare la dimensione più piccola del modulo.

Dividere il componente PaintBox1 in 4 parti uguali, all'interno di ogni parte disegnare una forma geometrica selezionata dall'utente nella Combobox (ellisse, rombo, triangolo e rettangolo). Il colore della forma viene selezionato dall'utente nel ColorBox.

Compito numero 11

Crea un'applicazione che ti permetta di:

selezionare la posizione del drawable dal componente Radiogroup

nel componente Immagine del triangolo rettangolo, impostare
il colore di riempimento della forma o il colore del contorno, a seconda
abilitando i pulsanti della casella di controllo. Selezione del colore tramite
Componente ColorGrid.

Compito numero 12

Creare un'applicazione che consenta all'utente di impostare le dimensioni del componente PaintBox1 (in pixel).

Fornisci che la dimensione del lato non può essere testo, non può essere un numero negativo e non può superare la dimensione più piccola del modulo.

Dividere il componente PaintBox1 in 2 parti uguali, all'interno di una delle parti disegnare una figura geometrica selezionata dall'utente nella Combobox (ellisse, rombo, triangolo e rettangolo). Il colore della forma viene selezionato dall'utente nel ColorBox.

Ad esempio, puoi cambiare il colore di un modulo come questo:

form1.Color:= ColorBox1.Colors;

Compito numero 13

Crea un'applicazione che ti permetta di:

a) disegnare un quadrato al centro della forma (la dimensione del lato del quadrato viene inserita dall'utente). Fornisci che la dimensione del lato non può essere testo, non può essere un numero negativo e non può superare la dimensione più piccola del modulo.

b) dividere il quadrato con una o due diagonali, a seconda dell'inclusione dei pulsanti Checkbox, e dipingere su ogni triangolo risultante in un colore diverso. La scelta del colore è fatta dall'utente.

Compito numero 14

Creare un'applicazione che consenta all'utente di impostare le dimensioni del componente PaintBox1 (in pixel).

Fornisci che la dimensione del lato non può essere testo, non può essere un numero negativo e non può superare la dimensione più piccola del modulo.

Dividi il componente PaintBox1 in 2 parti uguali, disegna un rombo all'interno di una parte e disegna un triangolo qualsiasi all'interno dell'altra parte. Il colore della forma viene selezionato dall'utente nel ColorBox.

Ad esempio, puoi cambiare il colore di un modulo come questo:

form1.Color:= ColorBox1.Colors;

Compito numero 15

Crea un'applicazione che ti permetta di:

a) impostare le dimensioni del componente Immagine in orizzontale e in verticale uguali e pari al numero inserito dall'utente da tastiera;

(a condizione che la dimensione del lato non possa essere testo, non può essere un numero negativo e non può superare la dimensione più piccola del modulo)

b) dividere la componente Immagine in 4 quadrati uguali con due linee blu;

c) all'interno di ogni quadrato risultante, disegnare un cerchio inscritto in esso (il colore dei cerchi può essere selezionato dall'utente attraverso la finestra di dialogo di selezione del colore).

Compito numero 16

Creare un'applicazione che consenta all'utente di impostare le dimensioni del componente PaintBox1 (in pixel).

Fornisci che la dimensione del lato non può essere testo, non può essere un numero negativo e non può superare la dimensione più piccola del modulo.

Dividi il componente PaintBox1 in 9 parti uguali e colora ciascun rettangolo a scacchiera risultante. Il colore di riempimento viene selezionato dall'utente nel ColorBox.

Ad esempio, puoi cambiare il colore di un modulo come questo:

form1.Color:= ColorBox1.Colors;

Compito numero 17

Posiziona due componenti Immagine e quattro pulsanti sul modulo: Colore linea, Colore riempimento, Ok ed Esci; e il componente Modifica.

Quando fai clic sul pulsante OK, Image1 disegna un quadrato con lato X e Image2 disegna un triangolo rettangolo con gambe uguali, ognuna delle quali ha lunghezza X.

Il vertice del triangolo coincide con l'origine di Image2. Uno dei vertici del quadrato coincide con l'origine di Image1.

Il pulsante OK diventa disponibile solo quando sono selezionati il ​​colore della linea e il colore di riempimento per disegnare la forma.

X - seleziona in modo casuale, utilizzando la funzione Casuale e il valore del valore X dovrebbe essere visualizzato nel componente Modifica.

Compito numero 18

Creare un'applicazione che consenta all'utente di impostare le dimensioni del componente PaintBox1 (in pixel).

Dividi il componente PaintBox1 in 4 parti uguali, all'interno della parte selezionata dall'utente, dovrebbe essere costruito un cerchio pieno, la cui dimensione è impostata dall'utente. L'utente seleziona il colore di riempimento nel ColorBox.

Ad esempio, puoi cambiare il colore di un modulo come questo:

form1.Color:= ColorBox1.Colors;

Per visualizzare le informazioni grafiche nella libreria Delphi, vengono forniti i componenti, un elenco dei quali è riportato in Tabella. 6.

Tabella 6

Componenti per la visualizzazione di informazioni grafiche

Componente Pagina Descrizione
Immagine (immagine) Aggiuntivo Utilizzato per visualizzare la grafica
PaintBox (finestra per disegnare) Sistema Utilizzato per creare un'area sul modulo in cui è possibile disegnare
DrawGrid (tabella di disegno) Aggiuntivo Utilizzato per visualizzare dati non testuali in righe e colonne
Grafico (tabelle e grafici) Aggiuntivo Il componente appartiene alla famiglia di componenti TeeChart utilizzati per creare diagrammi e grafici
Chartfx (tabelle e grafici) ActiveX Grafico e editor di grafici
FIBook (pagine Excel) ActiveX Componente per l'immissione e l'elaborazione di informazioni numeriche
VtChart (Grafici) ActiveX Finestra del diagramma

Inoltre, è possibile visualizzare e immettere informazioni grafiche sulla superficie di qualsiasi componente della finestra che disponga della proprietà Tela- tela.

Tabelle immagine: componenti DrawGrid e StringGrid

Componente Disegna Griglia utilizzato per creare una tabella in un'applicazione che può contenere elementi grafici. Questo componente è simile al componente Griglia di stringhe, poiché quest'ultimo è derivato da drawgrid. Pertanto, dentro Disegna Griglia sono presenti tutte le proprietà, i metodi, gli eventi del componente Griglia di stringhe, diversi da quelli relativi al testo, ad es. a parte le proprietà Cellule, Colonne, Righe, Oggetti. Da questo punto di vista, il componente StringGrid ha molto più potenziale di griglia, perché può memorizzare sia immagini che testi nelle celle. E se vuoi inserire del testo in alcune celle griglia, quindi dovrai utilizzare metodi per l'output del testo nell'area di disegno per questo, il che non è molto conveniente.

Componenti DrawGrid e StringGrid avere una tela Tela, dove possono essere posizionate le immagini.

C'è un metodo cellula retta, che restituisce l'area della tela allocata per la cella data. Questo metodo è definito come

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

Dove ACol e ARow- indici di colonna e di riga, a partire da 0, all'intersezione dei quali si trova la cella. L'area restituita da questa funzione è l'area della tela in cui può essere disegnata l'immagine desiderata. Ad esempio, l'operatore

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

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

copie per metodo CopiaRect alla cella (1,1) della tabella DrawGridl immagine dal componente bitmap. Questa cella è la seconda da sinistra e la seconda dall'alto nella tabella perché gli indici iniziano da 0. Si noti che se le dimensioni della cella sono inferiori a quelle dell'immagine copiata, nella cella verrà visualizzata solo la cella di sinistra. parte in alto Immagini.

Immagine della tela del componente DrawGrid e StringGrid come sulla tela di qualsiasi componente, è soggetto a cancellazione quando la finestra dell'applicazione è sovrapposta da altre finestre o, ad esempio, quando l'applicazione è ridotta a icona.

Strada conveniente inserire immagini nelle celle Disegna Griglia consiste nell'utilizzare un gestore di eventi OnDrawCell. Questi eventi si verificano per ogni cella della tabella al momento del suo ridisegno. L'intestazione del gestore è simile a questa:

procedure TForml.DrawGridlDrawCell(Mittente: TObject;

ACol, ARow: numero intero; Rect: TRect; Stato: TGridDrawState)

Parametro Stato indica lo stato della cella. È un insieme che può contenere i seguenti elementi: gdSelected- cella evidenziata gdFocused- la cella che è a fuoco, gdFisso- una cella in un'area fissa del tavolo. Parametro Stato può essere utilizzato per visualizzare le celle in modo diverso in stati diversi.

Componente della forma

Componente della forma può essere attribuito solo condizionatamente alla modalità di visualizzazione delle informazioni grafiche, in quanto rappresenta semplicemente varie forme geometriche, opportunamente ombreggiate. La proprietà principale di questo componente è forma(modulo), che può assumere i seguenti valori:

StRectangle - un rettangolo;

StSquare - quadrato;

StRoundRect - un rettangolo con angoli arrotondati;

StRouhdSquare - quadrato con angoli arrotondati;

StEllipse - ellisse;

StCircle - un cerchio.

Un'altra proprietà essenziale del componente è Spazzola(spazzola). Questa proprietà è un oggetto di tipo pennello, avere un numero di sottoproprietà, in particolare il colore (Pennello.Colore) e stile (Stile pennello) riempimento della forma. Puoi vedere il riempimento ad alcuni valori di Style in Fig. 3.2. La terza delle proprietà specifiche del componente forma- Penna(penna) che definisce lo stile della linea.

Componente grafico

Consideriamo ora il componente Grafico. Questo componente ti consente di creare vari grafici e grafici che sembrano molto impressionanti. Componente grafico ha molte proprietà, metodi, eventi, quindi se li consideri tutti, dovresti dedicare un intero capitolo a questo. Pertanto, ci limitiamo a considerare solo le caratteristiche principali Grafico. E il resto lo puoi trovare nella guida integrata di Delphi o semplicemente provarli sperimentando con i diagrammi.

Componente graficoè un contenitore di oggetti Serie- discendenti di classe TchartSeries. Ciascuno di questi oggetti rappresenta una serie di dati caratterizzati da un certo stile di visualizzazione: uno o un altro grafico o grafico. Ogni componente grafico può includere diverse serie. Se si desidera visualizzare un grafico, ogni serie corrisponderà a una curva sul grafico. Se si desidera visualizzare i grafici, per alcuni tipi di grafici è possibile sovrapporre diverse serie una sopra l'altra, per altri (ad esempio, per i grafici a torta) sarà probabilmente brutto. Tuttavia, in questo caso, è possibile impostare per un componente grafico diverse serie degli stessi dati con tipo diverso diagrammi. Poi, rendendone attivo uno in ogni momento del tempo, puoi dare all'utente la scelta del tipo di grafico che visualizza i dati di suo interesse.

Posizionare uno o due componenti grafico sul modulo e guarda le proprietà che si aprono in Object Inspector. Spieghiamone alcuni.

AllowPanning - determina la capacità dell'utente di scorrere la parte osservata del grafico durante l'esecuzione premendo il tasto destro del mouse. Valori possibili: pmNone - lo scorrimento è disabilitato, pmHori/ontal, pm Vertical o pmBoth - rispettivamente, lo scorrimento è consentito solo in direzione orizzontale, solo in direzione verticale o in entrambe le direzioni.

AhowZoom: consente all'utente di modificare lo zoom dell'immagine in fase di esecuzione tagliando frammenti di un grafico o di un grafico con il cursore del mouse. Se la cornice del frammento viene disegnata a destra e in basso, questo frammento viene esteso all'intero campo del grafico. E se la cornice è disegnata ea sinistra, viene ripristinata la scala originale.

Titolo: definisce il titolo del grafico.

Piede - definisce la didascalia sotto il grafico. Nessuno per impostazione predefinita. Il testo dell'etichetta è definito dalla sottoproprietà Text.

Cornice - definisce la cornice attorno al grafico.

Accanto a molte delle proprietà elencate in Object Inspector, sono presenti pulsanti con puntini di sospensione che consentono di richiamare l'una o l'altra pagina dell'Editor grafici, una finestra a più pagine che consente di impostare tutte le proprietà dei grafici. È anche possibile richiamare l'editor di diagrammi facendo doppio clic sul componente grafico oppure cliccaci sopra clic destro mouse e selezionando il comando Modifica grafico dal menu a comparsa.

Fare doppio clic sul componente superiore Grafico. Sarai indirizzato alla finestra dell'Editor grafico alla pagina Grafico, che ha diverse schede. Prima di tutto, ti interesserà la scheda Serie su di esso. Fare clic sul pulsante Aggiungi: aggiungi una serie. Verrai indirizzato a una finestra in cui puoi selezionare il tipo di grafico o grafico. IN questo caso selezionare Torta - Grafico a torta. Utilizzando la scheda Titoli, è possibile impostare il titolo del diagramma, la scheda Legenda consente di impostare le opzioni di visualizzazione per la legenda del diagramma (elenco di simboli) o rimuoverla del tutto dallo schermo, la scheda Pannello determina l'aspetto del pannello su cui viene visualizzato il diagramma, la scheda 3D consente di modificare l'aspetto del diagramma: inclinazione, taglio, spessore, ecc.

Quando si lavora con l'editor di grafici e si seleziona un tipo di grafico, i componenti grafico il tuo modulo mostra il suo aspetto con i dati condizionali inseriti al suo interno. Pertanto, puoi immediatamente osservare il risultato dell'applicazione di varie opzioni alla tua applicazione, il che è molto conveniente.

La pagina Serie, anch'essa dotata di una serie di schede, consente di selezionare caratteristiche di visualizzazione aggiuntive per la serie. In particolare, per un grafico a torta nella scheda Formato, è utile abilitare l'opzione Torta cerchiata, che assicurerà che il grafico venga visualizzato come un cerchio a qualsiasi dimensione del componente Grafico. Nella scheda Indicatori, i pulsanti del gruppo Stile determinano cosa verrà scritto sulle etichette relative ai singoli segmenti del grafico: Valore - valore, Percentuale - percentuali, Etichetta - nomi dei dati, ecc.

È possibile, se lo si desidera, aggiungere un'altra serie identica a questo componente grafico facendo clic sul pulsante Clona nella scheda Serie della pagina Grafico, quindi per questa nuova serie, fare clic sul pulsante Modifica e selezionare un tipo di grafico diverso, ad esempio Barra .

Uscire dall'editor di grafici, selezionare il componente grafico inferiore nell'applicazione e ripetere l'impostazione delle proprietà utilizzando l'editor di grafici. In questo caso, sarà necessario specificare due serie se si desidera visualizzare due curve sul grafico e selezionare il tipo di grafico a linee. Perché il noi stiamo parlando per quanto riguarda i grafici, è possibile utilizzare le schede Axis e Walls per impostare le caratteristiche delle coordinate degli assi e delle facce tridimensionali del grafico.

Su questo disegno aspetto l'applicazione termina. Resta da scrivere il codice che specifica i dati che si desidera visualizzare. Per l'applicazione di test, definiamo solo alcuni dati costanti nel grafico a torta e alcune funzioni nei grafici.

Per impostare i valori visualizzati, utilizzare i metodi Serie. Concentriamoci su tre metodi principali.

Metodo Chiaro cancella la serie dai dati immessi in precedenza.

Metodo Aggiungere:

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

consente di aggiungere un nuovo punto al grafico. Parametro Un valore corrisponde al valore aggiunto, parametro Un'etichetta- un'etichetta che verrà visualizzata sul grafico e nella legenda, Un colore- colore. Parametro Un'etichetta- facoltativo, può essere impostato vuoto: ‘ ’. Metodo AggiungiXY:

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

consente di aggiungere un nuovo punto al grafico della funzione. Opzioni AXValue E AYValore abbinare l'argomento e la funzione. Opzioni ALabel e AColor lo stesso del metodo Aggiungere.

Pertanto, la procedura per caricare i dati nel nostro esempio potrebbe essere simile a:

costAl=155; LA2=251; LA3=203; LA4=404; var i:parola; inizio

Con Seriesl comincio

Add(Al,"Acquista l",clGiallo);

Add(A2,"Disegno 2",clBlu);

Add(A3,"Piano 3",clRosso);

Add(A4,"Disegno 4",clViola); FINE;

Serie2.Chiaro; SerieS.Clear; per i:=da 0 a 100 inizia

Serie2.AddXY(0.02*Pi*i,sin(0.02*Pi*i)

SerieS.AddXY(0.02*Pi*i,cos(0.02*Pi*i) fine;

ClRosso); ,clBlu);

Operatori Chiaro sono necessari se hai intenzione di aggiornare i dati durante il funzionamento dell'applicazione.

Questo conclude la nostra introduzione al componente. Grafico.È vero, abbiamo considerato solo una piccola parte delle sue capacità.


“Visualizzazione di informazioni grafiche in Delphi” Piano tematico: 1.С С pppp oooo ssss oooo bbbb yyyy v v vyyyy vvv oooo dddd aaaa yy grrrr aaaa ffff iii hhhh eeee ssss kkkk oooo yyyy nnnn ffff oooo rrrr mmmm ahhh zzzz iiiiii iiiiii c c c c D D D D eeee llll pppp hhhh iiii O O tttt ooooh bbbb rrrr aaaa zhzhzhzh eeee nnnn eeee eeee k k k aaaa rrrr tttt nnnn oooo kkkk O O tttt oooo bbbb rrrr ahhh zhzh eeeeeeeeeeeeeeeeeeeeeee y yeeee oooo mmmm eeee tttt rrrr yiii hh hh eeeesssssssssssssssssrrrrssssssssss i i d d daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaammmmmmmm....


1. Metodi per la visualizzazione di informazioni grafiche. Ci sono diversi modi per visualizzare le informazioni grafiche in Delphi: Output di immagini pre-preparate (Image, Shape components); P Costruzione di grafici e diagrammi (componente Chart, ecc.); Immagini F programmaticamente(Oggetto tela).


2.Visualizza 2.Visualizza immagini. Abbiamo esaminato la visualizzazione delle immagini utilizzando il componente Immagine modificando periodicamente l'immagine visualizzata nei componenti Immagine. PPPP EDURRRREEEE YYYE TTTT IIII n N N n AAAAAA PP PRRR IIII MMMMEEEE RRRRR ...






3. Display 3. Visualizzazione delle forme geometriche. E puoi creare disegni semplici da diversi componenti Shape. P Modificando a livello di codice la posizione (.Left,.Top), la dimensione (.Width,.Height) e il colore (Brush.Color) dei componenti Shape nella figura, è possibile implementare elementi dell'animazione più semplice. R R R R aaaa sssssssssss mmmm oooo tttt rrrr eeee tttt b pp pp rrrr iiiiii mmmm eeee rrrr...


4. Costruzione 4. Costruzione di grafici e diagrammi. I diagrammi sono destinati a una rappresentazione più visiva di matrici di dati numerici, alla loro visualizzazione visiva e all'analisi. RRRR iiiiii mmmm eeee rrrr.... Ci sono diversi componenti per tracciare i grafici in Delphi, uno di questi è il componente Chart (sezione TeeChart Std).










Grafici e diagrammi. I dati da visualizzare vengono in genere passati al grafico a livello di codice, ad esempio: Series1.Clear; (serie chiara) for i:=1 to N do Series1.addxy(i, A[i], clGreen); Valore asse X Valore asse Y Etichetta asse X Colore dei dati sul grafico rrrraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaquello è quello è rrrrrrrrrrrr y y y y y y y y y y y y = = = = S S S S iiii nnnn ((((xxxx))))


Avanti: Lavoro di laboratorio """" OOOO tttt oooo bbbb rrrraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa !;aaaaaaaaaaaaaaaaaaaaaaaaa sono stati XXXX FFFF IIII GGGG UUUU Rrrr, e e XXXXX A A A A ANNNNNNNNNNE MMMM AAAAA AAAAA IIIIIAIA ”” ”” ”” .... Compito: 1) sviluppare l'applicazione per l'esecuzione dell'animazione più semplice cambiando periodicamente l'immagine visualizzata nei componenti Immagine. (Il numero di immagini è almeno tre, scegli tu stesso le immagini).




Avanti: Lavoro di laboratorio """" PPPP oooo ssss tttt rrrr oooo eeee nnnn iiiiii eeee yy y gr rrrr aaaa ffff iii kkkk oooo vvvv i i dd dd iii AAAA yyyy rrrr aaaa mmmm mmmm """".. ..Incarico: 1) Modificare l'applicazione da lavoro di laboratorio 9 (Visualizza i dati in una tabella). Aggiungi la possibilità di visualizzare alcuni dati della tabella su un grafico a barre o a torta. 2) Costruire un grafico di una data funzione.

Lavorare con la grafica in Delphi non si tratta solo di linee e disegni, ma anche di stampa documenti di testo. Pertanto, dentro Delphi lavora con la grafica bisogno di prendere un po' di tempo. Lavorare con grafica in Delfi comporta l'accesso al canvas, la proprietà Canvas dei componenti. Tela Delfiè una tela che permette al programmatore di accedere a ogni punto (pixel) e, come un artista, di visualizzare quanto richiesto. Certo, disegna pixel per pixel per lavorare con la grafica in Delphi non è necessario, il sistema Delphi fornisce potente strumenti grafici che facilitano il lavoro del programmatore.

Quando si lavora con la grafica in Delphi, il programmatore ha a sua disposizione la tela (canvas, canvas - property Tela Componenti Delphi), matita (proprietà Penna), un pennello (proprietà Brush) del componente o dell'oggetto su cui dovrebbe disegnare. Alla matita Penna e pennelli SpazzolaÈ possibile modificare il colore (proprietà Color) e lo stile (proprietà Style). L'accesso ai caratteri è fornito dalla proprietà canvas Font. Questi strumenti consentono di visualizzare sia testo che grafici piuttosto complessi di contenuto matematico e ingegneristico, nonché disegni. Oltretutto, lavorare con la grafica consente di utilizzare tali risorse in Delphi finestre come grafica e file video.

Naturalmente, non tutti i componenti di Delphi hanno queste proprietà. Sulla scheda Aggiuntivo componente specializzato localizzato Immagine, appositamente progettato per il disegno, ma anche una proprietà Tela avere, ad esempio, componenti come ListBox, ComboBox, StringGrid, così come il Form stesso, che posiziona i nostri componenti! Inoltre, Delphi utilizza la proprietà Canvas di un oggetto come una stampante per stampare i documenti.

La proprietà principale di un oggetto come Canvas Delphi è Pixel tipo Colore, ovvero è una matrice bidimensionale di punti (pixel) specificati dal relativo colore. Il disegno sulla tela avviene nel momento in cui si assegna un determinato colore a un punto qualsiasi della tela. Ad ogni pixel può essere assegnato qualsiasi disponibile colore delle finestre. Ad esempio, eseguendo l'istruzione

Image1.Canvas.Pixels:=clRed;

Risulterà nel disegnare un punto rosso con le coordinate . Puoi ottenere il colore di un pixel mediante assegnazione inversa:

Colore:=Image1.Canvas.Pixels;

Tipo Colore definito come un numero intero lungo (LongInt). I suoi quattro byte contengono informazioni sulle proporzioni dei colori blu (B), verde (G) e rosso (R). Nel sistema esadecimale ha questo aspetto: $00BBGGRR. La proporzione di ogni colore può variare da 0 a 255. Pertanto, per visualizzare il punto rosso massimo, deve essere assegnato colore $000000FF.
Per i colori standard, Delphi definisce un insieme di costanti di testo. Puoi vederlo aprendo la proprietà Color nell'Object Inspector, ad esempio, dello stesso Form.

La seguente tabella contiene alcune proprietà e metodi del canvas:

Procedura TextOut(X, Y: numero intero; cost Testo: WideString);
Produce un output di stringa Testo a partire da (X, Y) - il pixel in alto a sinistra del testo.
Proprietà TextWidth( var Testo: stringa): numero intero;
Contiene la lunghezza della stringa Testo in pixel.
Proprietà TextHeight( var Testo: stringa): numero intero;
Contiene l'altezza della linea Testo in pixel.
Procedura MoveTo(X, Y: Integer);
Sposta la posizione sul pixel con l'indirizzo (X, Y).
Procedura LineTo(X, Y: Integer);
Disegna una linea retta dal punto della posizione corrente al pixel con l'indirizzo (X, Y). L'indirizzo (X, Y) diventa il punto di posizione corrente.
Procedura FillRect( cost Rect: TRect);
Riempie un rettangolo Rett sulla tela usando il pennello corrente. Può essere utilizzato, tra l'altro, per cancellare parte dell'immagine sulla tela.

Scriviamo, utilizzando solo questi metodi del canvas, un'applicazione per un'immagine sul canvas di un componente Immagine testo immesso nel componente promemoria:

La prima cosa che faremo è inizializzare le variabili all'avvio del programma. È necessario determinare le dimensioni dell'area di disegno (creeremo per questo una variabile globale Rect del tipo TRect) e impostare il colore di sfondo Immagine bianco:

procedura TForm1.FormCreate(Mittente: TObject);
inizio
Rett.Sinistra:=0;
Retto in alto:=0;
Rect.Right:=Image1.Width;
Rect.Bottom:=Image1.Height;
Image1.Canvas.Brush.Color:=clWhite;
FINE;

Quindi disegna un bordo attorno ai lati dell'immagine:

procedura TForm1.pagina;
inizio
con Immagine1.Canvas Fare
inizio
Sposta su(0, 0);
LineTo(Image1.Width-1, 0);
LineTo(Image1.Width-1, Image1.Height-1);
LineTo(0, Image1.Height-1);
RigaA(0, 0);
FINE;
FINE;

Proviamo cosa è successo. Tutto funziona, ma la cornice non è ancora visualizzata. Quindi aggiungiamo una procedura pagina nella procedura ModuloCrea. Ora è bellissimo. Successivamente, scriveremo una semplice procedura per cancellare, pulire l'immagine. Dovrà essere chiamato prima di qualsiasi aggiornamento dell'immagine, altrimenti le immagini precedenti e successive si sovrapporranno.

procedura TForm1.compensazione;
inizio
Image1.Canvas.FillRect(Rect); //Rettangolo Rett riempita di bianco, l'immagine viene cancellata.
FINE;

Ora è il turno della stessa procedura di output del testo. Iniziamo a visualizzare il testo dal punto (3, 3) - l'angolo in alto a sinistra del foglio, con un piccolo rientro di 3 pixel. Ogni riga successiva verrà spostata all'altezza della riga:

procedura TForm1.prn;
var io: numero intero;
inizio
con Immagine1.Canvas Fare
per io:=1 A Memo1.Righe.Conteggio Fare
TextOut(3, 3+(i-1)*TextHeight("A"), Memo1.Lines);
FINE;

Ora tutto è pronto per l'output del testo. Lo faremo tramite l'evento OnChange:

procedura TForm1.Memo1Change(Mittente: TObject);
inizio
compensazione;
prn;
pagina;
FINE;

E infine, la procedura per modificare la dimensione del carattere:

procedura TForm1.Edit1Change(Mittente: TObject);
inizio
Memo1.Font.Size:=UpDown1.Position;
Image1.Canvas.Font.Size:=UpDown1.Position;
Memo1Cambia(Mittente);
FINE;

È possibile modificare questo programma per stampare il testo. Per lavorare con la stampante, è necessario collegare il modulo stampanti:

unità unità 1;

Interfaccia

utilizza
Windows, messaggi, SysUtils, varianti, classi, grafica, controlli, moduli,
Finestre di dialogo, StdCtrls, stampanti ;

Quando si lavora con la stampante come tela, viene chiamato il metodo per avviare la stampa. InizioDoc, quindi il documento viene emesso, la stampa viene completata chiamando il metodo FineDoc:

Printer.BeginDoc;
con Printer.Canvas Fare
inizio
... Stampa di un documento...
FINE;
Printer.EndDoc;

La larghezza e l'altezza della tela della stampante sono disponibili tramite le proprietà Printer.PageWidth E Printer.PageHeight. È possibile terminare la stampa su una pagina e iniziare a stampare su un'altra utilizzando il metodo Stampante.NuovaPagina.

Se noti un errore, seleziona una parte di testo e premi Ctrl + Invio
CONDIVIDERE: