Grafic GDI + în Visual Basic .NET Tutorial

click fraud protection

GDI + este modalitatea de a desena forme, fonturi, imagini sau, în general, orice lucru grafic Visual Basic .NET.

Acest articol este prima parte a unei introduceri complete pentru utilizarea GDI + în Visual Basic .NET.

GDI + este o parte neobișnuită a .NET. A fost aici înainte .NET (GDI + a fost lansat cu Windows XP) și nu partajează aceleași cicluri de actualizare ca .NET Framework. Documentația Microsoft afirmă de obicei că Microsoft Windows GDI + este o API pentru C / C ++ programatori în sistemul de operare Windows. Dar GDI + de asemenea include spații de nume utilizate în VB.NET pentru programarea grafică bazată pe software.

WPF

Dar nu este numai software grafic oferit de Microsoft, mai ales că Framework 3.0. Când au fost introduse Vista și 3.0, WPF-ul complet nou a fost introdus odată cu acesta. WPF este o abordare rapidă și hardware accelerată la nivel grafic. După cum spune Tim Cahill, membru al echipei software WPF Microsoft, cu WPF „vă descrieți scena folosind construcții la nivel înalt și ne vom preocupa odihna. "Și faptul că este accelerat hardware înseamnă că nu trebuie să trageți în jos funcționarea procesorului de PC desenând forme pe ecran. O mare parte din munca reală este realizată de placa dvs. grafică.

instagram viewer

Cu toate acestea am fost aici până acum. Fiecare „mare salt înainte” este însoțit, de obicei, de câțiva poticniri înapoi și, în afară de aceasta, va fi nevoie de ani de zile pentru ca WPF să își croiască drumul prin zile de octeți ai codului GDI +. Acest lucru este valabil mai ales că WPF presupune că lucrați cu un sistem cu putere mare, cu multă memorie și cu o placă grafică la cald. De aceea, multe PC-uri nu au putut rula Vista (sau cel puțin să folosească graficul Vista "Aero") când a fost introdus pentru prima dată. Prin urmare, această serie continuă să fie disponibilă pe site pentru oricare și toți cei care continuă să aibă nevoie să o folosească.

Good Ol 'Code

GDI + nu este un lucru pe care îl puteți trage într-un formular, precum alte componente din VB.NET. În schimb, obiectelor GDI +, în general, trebuie adăugate modul vechi - codificându-le de la zero! (Deși, VB .NET include o serie de fragmente de cod foarte utile care vă pot ajuta cu adevărat.)

Pentru a coda GDI +, utilizați obiecte și membrii acestora dintr-un număr de spații de nume .NET. (În prezent, acestea sunt de fapt doar codul de înveliș pentru obiectele de sistem de operare Windows care efectiv funcționează.)

Spații de nume

Spațiile de nume din GDI + sunt:

Sistem. Desen

Aceasta este core GDI + namespace. Definește obiecte pentru redarea de bază (fonturi, stilouri, perii de bază etc.) și cel mai important obiect: Grafica. Vom vedea mai multe lucruri în doar câteva paragrafe.

Sistem. Desen. Drawing2D

Acest lucru vă oferă obiecte pentru o grafică vectorială bidimensională mai avansată. Unele dintre ele sunt perii de gradient, capace de stilou și transformări geometrice.

Sistem. Desen. imagistica

Dacă doriți să schimbați imagini grafice - adică, schimbați paleta, extrageți metadate de imagini, manipulați metafile etc., acesta este cel de care aveți nevoie.

Sistem. Desen. tipărire

Pentru a reda imaginile către pagina tipărită, interacționează cu imprimanta în sine și formatează aspectul general al unei lucrări de tipărire, utilizați obiectele de aici.

Sistem. Desen. Text

Puteți utiliza colecții de fonturi cu acest spațiu de nume.

Obiect grafic

Locul pentru a începe cu GDI + este Grafică obiect. Deși lucrurile pe care le desenați apar pe monitor sau pe o imprimantă, obiectul Grafic este „pânza” pe care o desenați.

Dar obiectul Graphics este, de asemenea, una dintre primele surse de confuzie atunci când se utilizează GDI +. Obiectul Graphics este întotdeauna asociat cu o anumită contextul dispozitivului. Așadar, prima problemă cu care se confruntă practic orice student nou GDI + este „Cum pot obține un obiect grafic?”

Există practic două moduri:

  1. Puteți utiliza funcția e parametrul de eveniment care este transmis către OnPaint eveniment cu PaintEventArgs obiect. Mai multe evenimente trec PaintEventArgs și puteți utiliza funcția pentru a face referire la obiectul grafic care este deja utilizat de contextul dispozitivului.
  2. Puteți utiliza funcția CreateGraphics metoda pentru un context de dispozitiv pentru a crea un obiect Graphics.

Iată un exemplu al primei metode:

Subprimate protejate Sub OnPaint (_. Sistemul ByVal e As. Windows. Formulare. PaintEventArgs) Dim g As Graphics = e. Grafică. g. DrawString („Despre Visual Basic” & vbCrLf _. & "și GDI +" & vbCrLf & "O echipă grozavă", _. Font nou („Times New Roman”, 20), _. Perii. Firebrick, 0, 0) MyBase. OnPaint (e) Sub final

Faceți clic aici pentru a afișa ilustrația

Adăugați acest lucru în clasa Form1 pentru o aplicație Windows standard pentru a o coda singur.

În acest exemplu, un obiect Graphics este deja creat pentru formular Form1. Tot ce trebuie să faci este să creezi o instanță locală a acelui obiect și să-l folosești pentru a desena pe același formular. Observați că codul dvs. Înlocuiri OnPaint metodă. De aceea MyBase. OnPaint (e) se execută la final. Trebuie să vă asigurați că dacă obiectul de bază (cel pe care îl preschimbă) face altceva, are șansa de a o face. Adesea, codul dvs. funcționează fără acest lucru, dar este o idee bună.

PaintEventArgs

Puteți obține, de asemenea, un obiect Graphics PaintEventArgs obiect predat codului dumneavoastră în codul OnPaint și Metode OnPaintBackground a unei Forme. PrintPageEventArgs trecut în a PrintPage eveniment va conține un obiect Graphics pentru tipărire. Este chiar posibil să obțineți un obiect Grafic pentru unele imagini. Acest lucru vă poate permite să pictați chiar pe imagine, la fel cum ați picta pe un formular sau o componentă.

Organizatorul evenimentului

O altă variantă a metodei unu este adăugarea unui manager de evenimente pentru A picta eveniment pentru formular. Iată cum arată acel cod:

Sub Formular privat1_Pinta (_. Expeditor ByVal ca obiect, _. Sistemul ByVal e As. Windows. Formulare. PaintEventArgs) _. Mă ocupă. A picta. Dim g As Graphics = e. Grafică. g. DrawString („Despre Visual Basic” & vbCrLf _. & "și GDI +" & vbCrLf & "O echipă grozavă", _. Font nou („Times New Roman”, 20), _. Perii. Firebrick, 0, 0) Sub final

CreateGraphics

A doua metodă pentru a obține un obiect Grafic pentru codul dvs. folosește a CreateGraphics metoda care este disponibilă cu multe componente. Codul arată astfel:

Sub-buton privat1_Click (_. ByVal expeditor ca sistem. Obiect, _. Sistemul ByVal e As. EventArgs) _. Buton pentru mânere1.Click. Dim g = Eu. CreateGraphics. g. DrawString („Despre Visual Basic” & vbCrLf _. & "și GDI +" & vbCrLf & "O echipă grozavă", _. Font nou („Times New Roman”, 20), _. Perii. Firebrick, 0, 0) Sub final

Există câteva diferențe aici. Acest lucru este în Button1.Click eveniment deoarece când Form1 se repictă în el Sarcină eveniment, grafica noastră este pierdută. Deci trebuie să le adăugăm într-un eveniment ulterior. Dacă codificați acest lucru, veți observa că grafica este pierdută atunci când Form1 trebuie refacut. (Mimimizați și maximizați din nou pentru a vedea acest lucru.) Acesta este un mare avantaj pentru utilizarea primei metode.

Majoritatea referințelor recomandă utilizarea primei metode, deoarece grafica dvs. va fi vopsită automat. GDI + poate fi complicat!

instagram story viewer