GDI + Grafika u Visual Basic .NET Tutorial

GDI + način je crtanja oblika, fontova, slika ili općenito bilo čega grafičkog Visual Basic .NETO.

Ovaj je članak prvi dio cjelovitog uvoda za korištenje GDI + u Visual Basic .NET.

GDI + je neobičan dio .NET-a. Ovdje je bio prije .NET (GDI + je objavljen u sustavu Windows XP) i ne dijeli iste cikluse ažuriranja kao .NET Framework. Microsoftova dokumentacija obično kaže da je Microsoft Windows GDI + API za C / C ++ programera u Windows OS. Ali GDI + također Uključuje prostori s imenima koji se koriste u VB.NET za programiranje grafike zasnovano na softveru.

WPF

Ali nije to samo grafički softver koji je dao Microsoft, posebice od Framework 3.0. Kada su predstavljeni Vista i 3.0, s njom je predstavljen i potpuno novi WPF. WPF je grafički najbrži pristup hardveru. Kako to izjavljuje Tim Cahill, član tima softvera Microsoftovog WPF-a, s WPF-om "opisujete svoju scenu pomoću konstrukcija visoke razine, a mi ćemo se brinuti o odmori se. "A činjenica da je hardverski ubrzan znači da ne morate vući rad računala da crta oblike na zaslon. Veliki dio stvarnog posla obavlja vaša grafička kartica.

instagram viewer

Ipak smo već bili ovdje. Svaki "veliki skok naprijed" obično prati nekoliko spoticanja unatrag, a osim toga, trebat će godine da WPF provede svoj put kroz milijune bajtova GDI + koda. To je osobito istinito jer WPF pretpostavlja da radite s moćnim sustavom s puno memorije i vrućom grafičkom karticom. Zato mnoga računala nisu mogla pokrenuti Vistu (ili barem koristiti grafiku Viste "Aero") kad je prvi put predstavljena. Tako je ova serija i dalje dostupna na web mjestu za sve i sve koji je i dalje trebaju koristiti.

Dobar Ol 'kod

GDI + nije nešto što možete povući na obrazac kao druge komponente u VB.NET-u. Umjesto toga, GDI + objekti općenito se moraju dodati na stari način - kodiranjem ispočetka! (Iako VB .NET sadrži nekoliko vrlo zgodnih isječaka koda koji vam mogu zaista pomoći.)

Za kodiranje GDI + koristite objekte i njihove članove iz niza .NET prozora imena. (Trenutno su to samo kodni omoti za Windows OS objekte koji zapravo rade.)

imenskom prostoru

Prostori imena u GDI + su:

Sustav. Crtanje

Ovo je jezgra GDI + prostora imena. Definira objekte za osnovno prikazivanje (fontovi, olovke, osnovne četke itd.) i najvažniji predmet: Grafika. Više ćemo vidjeti u samo nekoliko odlomaka.

Sustav. Crtanje. Drawing2D

Tako dobivate predmete za napredniju dvodimenzionalnu vektorsku grafiku. Neki od njih su gradijentne četke, kapke za olovke i geometrijske transformacije.

Sustav. Crtanje. Slike

Ako želite promijeniti grafičke slike - tj. Promijeniti paletu, izdvojiti metapodate slike, manipulirati metafilijama i tako dalje - ovo je ono što trebate.

Sustav. Crtanje. tiskanje

Za prikazivanje slika na ispisanu stranicu, interakciju s samim pisačem i formatiranje cjelokupnog izgleda zadatka za ispis, upotrijebite ovdje predmete.

Sustav. Crtanje. Tekst

Možete koristiti zbirke fontova s ​​ovim prostorom imena.

Grafički objekt

Mjesto za početak s GDI + je Grafika objekt. Iako se stvari koje crtate prikazuju na monitoru ili pisaču, objekt Graphics je "platno" na koje crtate.

No, objekt Graphics također je jedan od prvih izvora zbrke prilikom korištenja GDI +. Objekt Graphics uvijek je povezan s određenim kontekst uređaja. Dakle, prvi problem s kojim se gotovo svaki novi student GDI + suočava je: "Kako mogu dobiti objekt Graphics?"

Postoje dva načina:

  1. Možete koristiti e parametar događaja koji se prosljeđuje u OnPaint događaj s PaintEventArgs objekt. Nekoliko događaja prolazi PaintEventArgs a možete koristiti da biste se pozvali na grafički objekt koji već koristi kontekst uređaja.
  2. Možete koristiti CreateGraphics metoda za kontekst uređaja za stvaranje grafičkog objekta.

Evo primjera prve metode:

Zaštićeni preklapanja Sub OnPaint (_. ByVal e kao sustav. Windows. Obrasci. PaintEventArgs) Dim g kao grafika = e. Grafika. g. DrawString ("O Visual Basic" & vbCrLf _. & "i GDI +" & vbCrLf & "Sjajan tim", _. Novi font ("Times New Roman", 20), _. Četke. Firebrick, 0, 0) MyBase. OnPaint (e) Kraj Sub

Kliknite ovdje za prikaz ilustracije

Dodajte to u klasu Form1 za standardni Windows program kako biste ga sami kodirali.

U ovom primjeru za obrazac je već stvoren objekt Graphics Form1. Sve što vaš kôd treba učiniti je stvoriti lokalnu instancu tog objekta i upotrijebiti ga za crtanje na istom obrascu. Primijetite da svoj kod Zaobilazi OnPaint metoda. Zato MyBase. OnPaint (e) izvršava se na kraju. Trebate biti sigurni da ako bazni objekt (onaj koji nadjačavate) radi nešto drugo, dobiva priliku za to. Često kôd funkcionira i bez toga, ali je dobra ideja.

PaintEventArgs

Grafički objekt možete dobiti i pomoću PaintEventArgs objekt predao na vaš kod u OnPaint i OnPaintBackground metode forme. PrintPageEventArgs prošao u a PrintPage događaj će sadržavati grafički objekt za ispis. Za neke slike je čak moguće dobiti objekt Graphics. Ovo vam omogućuje da slikate pravo na slici na isti način na koji ste slikali na obrascu ili komponenti.

Događač

Druga varijacija prve metode je dodavanje alata za obradu događaja Boja događaj za formu. Evo kako taj kôd izgleda:

Private Sub Form1_Paint (_. ByVal pošiljatelj Kao predmet, _. ByVal e kao sustav. Windows. Obrasci. PaintEventArgs) _. Rukuje sa mnom. Boja. Dim g kao grafika = e. Grafika. g. DrawString ("O Visual Basic" & vbCrLf _. & "i GDI +" & vbCrLf & "Sjajan tim", _. Novi font ("Times New Roman", 20), _. Četke. Firebrick, 0, 0) Kraj Sub

CreateGraphics

Druga metoda za dobivanje grafičkog objekta za svoj kod koristi a CreateGraphics metoda koja je dostupna s mnogim komponentama. Kod izgleda ovako:

Privatni potpuni gumb1_Click (_. ByVal pošiljalac kao sustav. Objekt, _. ByVal e kao sustav. EventArgs) _. Ručke gumba1.Kliknite. Dim g = Ja. CreateGraphics. g. DrawString ("O Visual Basic" & vbCrLf _. & "i GDI +" & vbCrLf & "Sjajan tim", _. Novi font ("Times New Roman", 20), _. Četke. Firebrick, 0, 0) Kraj Sub

Ovdje postoji nekoliko razlika. Ovo je u Button1.Click događaj jer kad Form1 prepravlja se u Opterećenje događaju, naše grafike su izgubljene. Dakle, moramo ih dodati u kasnijem događaju. Ako to kodirate, primijetit ćete da se grafika izgubi kada Form1 mora se preraditi. (Mimizirajte i ponovo povećajte da biste to vidjeli.) To je velika prednost od korištenja prve metode.

Većina referenci preporučuje korištenje prve metode jer će se vaše grafike automatski prebarvati. GDI + može biti lukav!