GDI + -grafiikka Visual Basic .NET -opetusohjelmassa

GDI + on tapa piirtää muotoja, fontteja, kuvia tai yleensä mitä tahansa graafista Visual Basic .NETTO.

Tämä artikkeli on ensimmäinen osa kokonaisesta johdannosta GDI +: n käytöstä Visual Basic .NET: ssä.

GDI + on epätavallinen osa .NET-verkkoa. Se oli täällä ennen .NET (GDI + julkaistiin Windows XP: n kanssa), eikä se jaa samoja päivitysjaksoja kuin .NET Framework. Microsoftin asiakirjoissa todetaan yleensä, että Microsoft Windows GDI + on sovellusliittymä C / C ++ ohjelmoijat Windows-käyttöjärjestelmään. Mutta GDI + myös sisältää nimialueita, joita käytetään VB.NET: ssä ohjelmistopohjaiseen grafiikkaohjelmointiin.

WPF

Mutta se ei ole vain Microsoftin tarjoama grafiikkaohjelmisto, varsinkin kun Framework 3.0. Kun Vista ja 3.0 otettiin käyttöön, aivan uusi WPF esiteltiin sen mukana. WPF on korkeatasoinen, laitteistokiihdytetty lähestymistapa grafiikkaan. Kuten Microsoftin WPF-ohjelmistoryhmän jäsen Tim Cahill sanoo, WPF: llä "kuvaat kohtaustasi korkean tason konstruktioilla, ja olemme huolissamme "Ja se, että laitteisto on kiihdytetty, tarkoittaa, että sinun ei tarvitse vetää alas tietokoneesi prosessorin toimintaa piirtämällä muotoja näyttö. Suuri osa todellisesta työstä tehdään näytönohjaimellasi.

instagram viewer

Olemme kuitenkin olleet täällä aikaisemmin. Jokaiseen "suureen harppaukseen" liittyy yleensä muutamia kompastuksia taaksepäin, ja lisäksi vie vuosia, ennen kuin WPF työskentelee tiensä läpi GDI + -koodin tavaroiden ziljoonien tavujen läpi. Se on erityisen totta, koska WPF olettaa melkein, että työskentelet tehokkaan järjestelmän kanssa, jossa on paljon muistia ja kuuma näytönohjain. Siksi monet tietokoneet eivät voineet ajaa Vistaa (tai ainakin käyttää Vista "Aero" -grafiikkaa), kun se esiteltiin ensimmäisen kerran. Joten tämä sarja on edelleen saatavana sivustolla kaikille, joille on edelleen tarpeen käyttää sitä.

Hyvä Ol-koodi

GDI + ei ole asia, jota voit vetää muotoon kuten muut VB.NET-komponentit. Sen sijaan GDI + -objektit on yleensä lisättävä vanhalla tavalla - koodaamalla ne tyhjästä! (Vaikka VB .NET sisältää todellakin erittäin käteviä koodinpätkiä, jotka voivat todella auttaa sinua.)

GDI +: n koodaamiseen käytetään objekteja ja niiden jäseniä useista .NET-nimitiloista. (Tällä hetkellä nämä ovat oikeastaan ​​vain käärekoodia Windows-käyttökohteille, jotka tosiasiallisesti tekevät työtä.)

nimiavaruudet

GDI +: n nimitilat ovat:

Järjestelmä. Piirustus

Tämä on ydin GDI + nimitila. Se määrittelee objektit perusmuodostusta varten (kirjasimet, kynät, perusharjat jne.) ja tärkein esine: Grafiikka. Näemme lisää tästä vain muutamassa kappaleessa.

Järjestelmä. Piirustus. Drawing2D

Tämä antaa sinulle kohteita edistyneemmälle kaksiulotteiselle vektorigrafiikalle. Jotkut niistä ovat kaltevuusharjat, kynäkorkit ja geometriset muunnokset.

Järjestelmä. Piirustus. Imaging

Jos haluat muuttaa graafisia kuvia - ts. Muuttaa palettia, purkaa kuvan metatiedot, manipuloida meta-tiedostoja ja niin edelleen - tätä tarvitset.

Järjestelmä. Piirustus. painaminen

Voit tuottaa kuvia tulostetulle sivulle, olla vuorovaikutuksessa itse tulostimen kanssa ja muotoilla tulostustyön yleinen ulkonäkö käyttämällä tässä olevia esineitä.

Järjestelmä. Piirustus. Teksti

Voit käyttää fontti kokoelmia tässä nimiavaruudessa.

Grafiikkaobjekti

GDI +: n aloittamispaikka on grafiikka esine. Vaikka piirrämäsi asiat näkyvät näytöllä tai tulostimella, grafiikkaobjekti on piirretty kangas.

Mutta Grafiikkaobjekti on myös yksi ensimmäisistä sekaannuksen lähteistä, kun käytetään GDI +: ta. Grafiikkaobjekti liitetään aina tiettyyn laitekonteksti. Joten ensimmäinen ongelma, jonka käytännössä jokainen uusi GDI + -opiskelija kohtaa, on "Kuinka saan grafiikkaobjektin?"

Periaatteessa on kaksi tapaa:

  1. Voit käyttää e tapahtumaparametri, joka välitetään OnPaint tapahtuma PaintEventArgs esine. Useat tapahtumat ohittavat PaintEventArgs ja voit käyttää viitataksesi grafiikkaobjektiin, jota laitekonteksti jo käyttää.
  2. Voit käyttää CreateGraphics menetelmä laitekontekstiin graafisen objektin luomiseksi.

Tässä on esimerkki ensimmäisestä menetelmästä:

Suojattu ohittaa Sub OnPaintin (_. ByVal e As -järjestelmä. Windows. Lomakkeet. PaintEventArgs) himmennetään graafisena = e. Grafiikkaa. g. DrawString ("Tietoja Visual Basicistä" & vbCrLf _. & "ja GDI +" & vbCrLf & "Suuri joukkue", _. Uusi kirjasin ("Times New Roman", 20), _. Harjat. Firebrick, 0, 0) MyBase. OnPaint (e) End Sub

Napsauta tätä nähdäksesi kuvan

Lisää tämä lomakkeeseen Form1 tavalliseen Windows-sovellukseen koodataksesi se itse.

Tässä esimerkissä grafiikkaobjekti on jo luotu lomakkeelle Form1. Koodisi on vain luotava kyseisen objektin paikallinen ilmentymä ja käytettävä sitä piirtääksesi samaan muotoon. Huomaa, että koodisi ohitukset OnPaint menetelmä. Siksi MyBase. OnPaint (e) suoritetaan lopussa. Sinun on varmistettava, että jos perusobjekti (jota ohitat) tekee jotain muuta, se saa mahdollisuuden tehdä sen. Usein koodisi toimii ilman tätä, mutta se on hyvä idea.

PaintEventArgs

Voit myös saada grafiikkaobjektin käyttämällä PaintEventArgs esine, joka on annettu koodillesi OnPaint ja OnPaintBackground-menetelmät lomakkeesta. PrintPageEventArgs kulunut a PrintPage tapahtuma sisältää grafiikkaobjektin tulostamista varten. Joistakin kuvista on jopa mahdollista saada grafiikkaobjekti. Tämän avulla voit maalata kuvan oikealla puolella samalla tavalla kuin maalataan lomakkeelle tai komponentille.

Tapahtumakäsittelijä

Toinen variaatio menetelmästä yksi on lisätä tapahtumakäsittelijä Maali lomakkeen tapahtuma. Tämä koodi näyttää tältä:

Yksityinen alimuoto1_maalaus (_. ByVal-lähettäjä objektina _. ByVal e As -järjestelmä. Windows. Lomakkeet. PaintEventArgs) _. Hoitaa minua. Maali. Himmennä graafisena = e. Grafiikkaa. g. DrawString ("Tietoja Visual Basicistä" & vbCrLf _. & "ja GDI +" & vbCrLf & "Suuri joukkue", _. Uusi kirjasin ("Times New Roman", 20), _. Harjat. Firebrick, 0, 0) End Sub

CreateGraphics

Toinen tapa saada graafinen objekti koodillesi käyttää a CreateGraphics menetelmä, joka on saatavana monien komponenttien kanssa. Koodi näyttää tältä:

Yksityinen alapainike1_ napsauta (_. ByVal-lähettäjä järjestelmänä. Kohde, _. ByVal e As -järjestelmä. EventArgs) _. Kahvat Button1.Click. Dim g = minä. CreateGraphics. g. DrawString ("Tietoja Visual Basicistä" & vbCrLf _. & "ja GDI +" & vbCrLf & "Suuri joukkue", _. Uusi kirjasin ("Times New Roman", 20), _. Harjat. Firebrick, 0, 0) End Sub

Tässä on pari eroa. Tämä on Button1.Click tapahtuma koska koska Form1 maalaa itsensä Ladata tapahtuma, grafiikkamme ovat kadonneet. Joten meidän on lisättävä ne myöhemmässä tapahtumassa. Jos koodaat tämän, huomaat, että grafiikat katoavat Form1 on piirrettävä uudelleen. (Pienennä ja maksimoi uudelleen nähdäksesi tämän.) Se on iso etu ensimmäisen menetelmän käyttämisessä.

Useimmat referenssit suosittelevat ensimmäisen menetelmän käyttöä, koska grafiikat maalataan automaattisesti. GDI + voi olla hankala!