Grafica GDI + in Visual Basic .NET Tutorial

GDI + è il modo di disegnare forme, caratteri, immagini o in generale qualsiasi elemento grafico Visual Basic .NETTO.

Questo articolo è la prima parte di un'introduzione completa all'utilizzo di GDI + in Visual Basic .NET.

GDI + è una parte insolita di .NET. Era qui prima di .NET (GDI + è stato rilasciato con Windows XP) e non condivide gli stessi cicli di aggiornamento di .NET Framework. La documentazione di Microsoft in genere afferma che Microsoft Windows GDI + è un'API per C / C ++ programmatori nel sistema operativo Windows. Ma GDI + anche include il spazi dei nomi utilizzati in VB.NET per la programmazione grafica basata su software.

WPF

Ma non è il solo software di grafica fornito da Microsoft, soprattutto dal Framework 3.0. Quando sono stati introdotti Vista e 3.0, è stato introdotto il nuovissimo WPF. WPF è un approccio grafico di alto livello con accelerazione hardware. Come afferma Tim Cahill, membro del team del software Microsoft WPF, con WPF "descrivi la tua scena usando costrutti di alto livello e ci preoccuperemo del resto. "E il fatto che sia accelerato dall'hardware significa che non è necessario trascinare verso il basso il funzionamento del processore del PC disegnando forme sul schermo. Gran parte del vero lavoro viene svolto dalla scheda grafica.

instagram viewer

Siamo stati qui prima, comunque. Ogni "grande balzo in avanti" è di solito accompagnato da alcuni inciampi all'indietro e, inoltre, ci vorranno anni prima che WPF riesca a superare i miliardi di byte di codice GDI +. Ciò è particolarmente vero dal momento che WPF presuppone che stai lavorando con un sistema ad alta potenza con molta memoria e una scheda grafica calda. Ecco perché molti PC non potevano eseguire Vista (o almeno usare la grafica "Aero" di Vista) quando fu introdotto per la prima volta. Quindi questa serie continua ad essere disponibile sul sito per tutti coloro che continuano ad averne bisogno.

Buon vecchio codice

GDI + non è qualcosa che puoi trascinare su un modulo come altri componenti in VB.NET. Invece, gli oggetti GDI + generalmente devono essere aggiunti alla vecchia maniera, codificandoli da zero! (Sebbene, VB .NET includa un numero di frammenti di codice molto utili che possono davvero aiutarti.)

Per codificare GDI +, usi gli oggetti e i loro membri da un certo numero di spazi dei nomi .NET. (Al momento, questi sono in realtà solo codici wrapper per oggetti del sistema operativo Windows che svolgono effettivamente il lavoro.)

Namespace

Gli spazi dei nomi in GDI + sono:

Sistema. Disegno

Questo è il spazio dei nomi GDI + di base. Definisce gli oggetti per il rendering di base (font, penne, pennelli di base, ecc.) e l'oggetto più importante: Grafica. Ne vedremo di più in pochi paragrafi.

Sistema. Disegno. Drawing2D

Questo ti dà oggetti per una grafica vettoriale bidimensionale più avanzata. Alcuni di essi sono pennelli a gradiente, tappi per penna e trasformazioni geometriche.

Sistema. Disegno. Imaging

Se vuoi cambiare le immagini grafiche, ovvero cambiare la tavolozza, estrarre i metadati delle immagini, manipolare i metafile e così via, questo è quello di cui hai bisogno.

Sistema. Disegno. Stampa

Per eseguire il rendering delle immagini sulla pagina stampata, interagire con la stampante stessa e formattare l'aspetto generale di un lavoro di stampa, utilizzare gli oggetti qui.

Sistema. Disegno. Testo

È possibile utilizzare raccolte di caratteri con questo spazio dei nomi.

Oggetto grafico

Il punto di partenza con GDI + è il Grafica oggetto. Sebbene le cose che disegni vengano visualizzate sul monitor o su una stampante, l'oggetto Graphics è la "tela" su cui disegni.

Ma l'oggetto Graphics è anche una delle prime fonti di confusione quando si utilizza GDI +. L'oggetto Graphics è sempre associato a un particolare contesto del dispositivo. Quindi il primo problema che praticamente ogni nuovo studente di GDI + deve affrontare è "Come posso ottenere un oggetto grafico?"

Esistono sostanzialmente due modi:

  1. Puoi usare il e parametro dell'evento che viene passato a OnPaint evento con il PaintEventArgs oggetto. Diversi eventi passano il PaintEventArgs e puoi usare il per fare riferimento all'oggetto Graphics che è già utilizzato dal contesto del dispositivo.
  2. Puoi usare il CreateGraphics metodo per un contesto di dispositivo per creare un oggetto grafico.

Ecco un esempio del primo metodo:

Protetto sostituisce Sub OnPaint (_. ByVal e As System. Finestre. Le forme. PaintEventArgs) Dim g As Graphics = e. Grafica. g. DrawString ("Informazioni su Visual Basic" e vbCrLf _. & "e GDI +" & vbCrLf & "Una grande squadra", _. Nuovo carattere ("Times New Roman", 20), _. Pennelli. Firebrick, 0, 0) MyBase. OnPaint (e) End Sub

Fare clic qui per visualizzare l'illustrazione

Aggiungi questo nella classe Form1 per un'applicazione Windows standard per codificarlo tu stesso.

In questo esempio, un oggetto grafico è già stato creato per il modulo form1. Tutto quello che il tuo codice deve fare è creare un'istanza locale di quell'oggetto e usarlo per disegnare sullo stesso modulo. Si noti che il tuo codice Sostituzioni il OnPaint metodo. Ecco perchè MyBase. OnPaint (e) viene eseguito alla fine. Devi assicurarti che se l'oggetto base (quello che stai scavalcando) sta facendo qualcos'altro, ha la possibilità di farlo. Spesso, il tuo codice funziona senza questo, ma è una buona idea.

PaintEventArgs

Puoi anche ottenere un oggetto grafico usando il PaintEventArgs oggetto consegnato al tuo codice in OnPaint e Metodi OnPaintBackground di una forma. Il PrintPageEventArgs passato a PrintPage L'evento conterrà un oggetto grafico per la stampa. È anche possibile ottenere un oggetto grafico per alcune immagini. Ciò può consentire di dipingere direttamente sull'immagine nello stesso modo in cui si dipingerebbe su un modulo o un componente.

Gestore di eventi

Un'altra variante del metodo uno è quella di aggiungere un gestore eventi per il Dipingere evento per il modulo. Ecco come appare quel codice:

Sottomodulo privato1_Paint (_. Mittente ByVal come oggetto, _. ByVal e As System. Finestre. Le forme. PaintEventArgs) _. Handles Me. Dipingere. Dim g As Graphics = e. Grafica. g. DrawString ("Informazioni su Visual Basic" e vbCrLf _. & "e GDI +" & vbCrLf & "Una grande squadra", _. Nuovo carattere ("Times New Roman", 20), _. Pennelli. Firebrick, 0, 0) End Sub

CreateGraphics

Il secondo metodo per ottenere un oggetto Graphics per il tuo codice utilizza a CreateGraphics metodo disponibile con molti componenti. Il codice è simile al seguente:

Pulsante secondario privato1_Clicca (_. Mittente ByVal come sistema. Oggetto, _. ByVal e As System. EventArgs) _. Pulsante Maniglie1. Fare clic su. Dim g = Me. CreateGraphics. g. DrawString ("Informazioni su Visual Basic" e vbCrLf _. & "e GDI +" & vbCrLf & "Una grande squadra", _. Nuovo carattere ("Times New Roman", 20), _. Pennelli. Firebrick, 0, 0) End Sub

Ci sono un paio di differenze qui. Questo è nel Button1.Click evento perché quando form1 si ritrova nel Caricare evento, la nostra grafica è persa. Quindi dobbiamo aggiungerli in un evento successivo. Se lo codifichi, noterai che la grafica si perde quando form1 deve essere ridisegnato. (Mimimizza e massimizza di nuovo per vederlo.) Questo è un grande vantaggio nell'uso del primo metodo.

La maggior parte dei riferimenti consiglia di utilizzare il primo metodo poiché la grafica verrà ridipinta automaticamente. GDI + può essere complicato!

instagram story viewer