GDI + je način za risanje oblik, pisav, slik ali na splošno karkoli grafičnega Visual basic .MREŽA.
Ta članek je prvi del popolne predstavitve uporabe GDI + v Visual Basic .NET.
GDI + je nenavaden del .NET-a. Tu je bil prej .NET (GDI + je bil izdan z operacijskim sistemom Windows XP) in nima enakih ciklov posodobitve kot .NET Framework. Microsoftova dokumentacija običajno navaja, da je Microsoft Windows GDI + API za C / C ++ programerji v operacijski sistem Windows. Toda GDI + tudi vključuje imenskih prostorov, ki se uporabljajo v VB.NET za programsko grafično programiranje.
WPF
Ampak to ni tisto samo grafična programska oprema, ki jo ponuja Microsoft, še posebej od Framework 3.0. Ko so bili predstavljeni Vista in 3.0, so z njo predstavili popolnoma nov WPF. WPF je visokotehnološki pospešen pristop do grafike. Kot pravi Tim Cahill, član skupine za programsko opremo Microsoft WPF, z WPF "opisujete svojo sceno z uporabo konstrukcij na visoki ravni in skrbeli bomo za počivaj. "In dejstvo, da se strojno pospeši, pomeni, da vam ni treba povleči delovanja procesorja računalnika, da nariše oblike na zaslon. Večino resničnega dela opravi vaša grafična kartica.
Vendar smo bili že prej tukaj. Vsak "velik skok naprej" običajno spremlja nekaj spoticanja nazaj, poleg tega pa bo trajalo leta, da bo WPF deloval skozi zilione bajtov GDI + kode. To še posebej velja, ker WPF predpostavlja, da delate z zmogljivim sistemom z veliko pomnilnika in vročo grafično kartico. Zato mnogi računalniki niso mogli zagnati Viste (ali vsaj uporabiti grafiko Vista "Aero"), ko je bila prvič predstavljena. Tako je ta serija še naprej na voljo na spletnem mestu za vse in vse, ki jo bodo še naprej morali uporabljati.
Dober Ol kodeks
GDI + ni nekaj, kar lahko povlečete v obrazec kot druge komponente v VB.NET. Namesto tega je treba na splošno GDI + objekte dodati po starem načinu - tako, da jih kodiramo iz nič! (Čeprav VB .NET vključuje številne zelo priročne odrezke kode, ki vam lahko resnično pomagajo.)
Za kodiranje GDI + uporabljate predmete in njihove člane iz številnih prostorov imen .NET. (Trenutno so to le kode za zavijanje predmetov operacijskega sistema Windows, ki dejansko delujejo.)
Prostori imen
Imenski prostori v GDI + so:
Sistem. Risba
Tole je the jedro GDI + imenskega prostora. Opredeli predmete za osnovno upodabljanje (pisave, flomastri, osnovne ščetke itd.) in najpomembnejši predmet: Grafika. Več o tem bomo videli v samo nekaj odstavkih.
Sistem. Risba. Risba2D
Tako dobite predmete za naprednejšo dvodimenzionalno vektorsko grafiko. Nekatere med njimi so gradientne ščetke, kapice in geometrijske transformacije.
Sistem. Risba. Slikanje
Če želite spremeniti grafične slike - torej spremeniti paleto, ekstrahirati metapodatke o slikah, manipulirati z metafizi in podobno - to je tisto, kar potrebujete.
Sistem. Risba. Tisk
Če želite upodabljati slike na natisnjeno stran, komunicirati s tiskalnikom in formatirati celotni videz tiskalnega opravila, uporabite tukaj predmete.
Sistem. Risba. Besedilo
S tem prostorom imen lahko uporabite zbirke pisav.
Grafični objekt
Začetek z GDI + je Grafika objekt. Čeprav se stvari, ki jih narišete, prikažejo na monitorju ali tiskalniku, je objekt Graphics tisto "platno", ki ga narišete.
Toda objekt Graphics je tudi eden prvih virov zmede pri uporabi GDI +. Objekt Graphics je vedno povezan z določenim kontekst naprave. Torej prva težava, s katero se sooči praktično vsak nov študent GDI +, je: "Kako dobim predmet Graphics?"
V bistvu obstajata dva načina:
- Lahko uporabite e parameter dogodka, ki je posredovan v OnPaint dogodek z PaintEventArgs objekt. Več dogodkov je mimo PaintEventArgs in lahko uporabite sklic na objekt Graphics, ki ga že uporablja kontekst naprave.
- Lahko uporabite CreateGraphics metoda za kontekst naprave za ustvarjanje predmeta Graphics.
Tu je primer prve metode:
Zaščiteno preglasi Sub OnPaint (_. ByVal e As System. Windows. Obrazci. PaintEventArgs) Dim g kot grafika = e. Grafika. g. DrawString ("O Visual Basic" & vbCrLf _. & "in GDI +" & vbCrLf & "Odlična ekipa", _. Nova pisava ("Times New Roman", 20), _. Čopiči. Firebrick, 0, 0) MyBase. OnPaint (e) Končni pod
Kliknite tukaj, če želite prikazati ilustracijo
To dodajte v razred Form1 za standardni program Windows, da ga sami kodirate.
V tem primeru je za obrazec že ustvarjen objekt Graphics Obrazec1. Vse, kar morate storiti, je ustvariti lokalni primerek tega predmeta in ga uporabiti za risanje na istem obrazcu. Opazite to kodo Prevlada the OnPaint metoda. Zato MyBase. OnPaint (e) se izvede na koncu. Poskrbeti morate, da če osnovni objekt (tisti, ki ga preglasite) počne nekaj drugega, dobi priložnost za to. Pogosto vaša koda deluje brez tega, vendar je dobra ideja.
PaintEventArgs
Objekt Graphics lahko dobite tudi s pomočjo PaintEventArgs predmet, izročen kode v OnPaint in Metode OnPaintBackground obrazca. The PrintPageEventArgs opravil v a PrintPage dogodek bo vseboval grafični objekt za tiskanje. Za nekatere slike je celo mogoče dobiti objekt Graphics. Tako lahko na sliki slikate prav tako, kot bi slikali na obrazcu ali komponenti.
Prireditelj dogodkov
Druga različica prve metode je, da dodamo obdelovalnik dogodkov za Barva dogodek za obrazec. Tukaj izgleda ta koda:
Zasebni podnapis1_Paint (_. Pošiljatelj ByVal Kot predmet, _. ByVal e As System. Windows. Obrazci. PaintEventArgs) _. Obvladuje me. Barva. Dim g kot grafika = e. Grafika. g. DrawString ("O Visual Basic" & vbCrLf _. & "in GDI +" & vbCrLf & "Odlična ekipa", _. Nova pisava ("Times New Roman", 20), _. Čopiči. Firebrick, 0, 0) Končni pod
CreateGraphics
Drugi način za pridobitev predmeta Graphics za vašo kodo uporablja a CreateGraphics metoda, ki je na voljo s številnimi komponentami. Koda izgleda tako:
Zasebni pod gumb1_Click (_. ByVal pošiljatelj kot sistem. Predmet, _. ByVal e As System. EventArgs) _. Ročaji s tipko1.Klik. Dim g = jaz. CreateGraphics. g. DrawString ("O Visual Basic" & vbCrLf _. & "in GDI +" & vbCrLf & "Odlična ekipa", _. Nova pisava ("Times New Roman", 20), _. Čopiči. Firebrick, 0, 0) Končni pod
Tu je nekaj razlik. To je v Gumb. Klikni dogodek, ker kdaj Obrazec1 se prebarva v Obremenite dogodka, naša grafika je izgubljena. Zato jih moramo dodati v kasnejšem primeru. Če to kodirate, boste opazili, da se grafika izgubi, ko Obrazec1 je treba preoblikovati. (Zapomnite jih in znova povečajte, če želite videti to.) To je velika prednost uporabe prve metode.
Večina referenc priporoča uporabo prve metode, saj se bodo vaše grafike samodejno prebarvale. GDI + je lahko težaven!