GDI + graafika Visual Basic .NET-i õpetuses

GDI + on viis joonistada kujundeid, fonte, pilte või kõike muud graafilist Visual Basic .NET.

See artikkel on esimene osa GDI + kasutamise täielikust tutvustusest Visual Basic .NET-is.

GDI + on .NET-i ebatavaline osa. See oli siin enne .NET (GDI + ilmus koos Windows XP-ga) ja see ei jaga samu värskendustsükleid kui .NET Framework. Microsofti dokumentatsioonis öeldakse tavaliselt, et Microsoft Windows GDI + on API C / C ++ programmeerijad Windowsi OS-i. Kuid GDI + ka hõlmab nimeruumid, mida kasutatakse VB.NET-is tarkvarapõhise graafika programmeerimiseks.

WPF

Kuid see pole see ainult Microsofti pakutav graafikatarkvara, eriti alates raamistikust 3.0. Kui Vista ja 3.0 tutvustati, tutvustati sellega täiesti uut WPF-i. WPF on kõrgetasemeline riistvaral kiirendatud lähenemine graafikale. Nagu ütleb Microsofti WPF-i tarkvara meeskonna liige Tim Cahill, WPF-iga kirjeldate oma stseeni kõrgetasemeliste konstruktsioonide abil ja me muretseme puhata. "Ja asjaolu, et see on riistvaraline kiirendus, tähendab, et te ei pea lohistama arvutiprotsessori toiminguid, joonistades kujundeid ekraan. Suure osa tegelikust tööst teeb teie graafikakaart.

instagram viewer

Oleme siin siiski varem olnud. Iga "suure hüppega" kaasneb tavaliselt mõni takistus ja peale selle kulub WPFil mitu aastat GDI + koodi baitide ziljonite kaupa jõudmiseks. See kehtib eriti seetõttu, et WPF eeldab peaaegu, et töötate suure võimsusega süsteemiga, millel on palju mälu ja kuum graafikakaart. Sellepärast ei saanud paljud arvutid Vista esmakordset tutvustamist (või vähemalt kasutada Vista "Aero" graafikat). Nii et see sari on saidil jätkuvalt kättesaadav kõigile ja kõigile, kes seda endiselt vajavad.

Hea Ol 'kood

GDI + pole midagi sellist, mida saate vormile lohistada nagu teised komponendid VB.NET-is. GDI + objektid tuleb selle asemel lisada vanamoodi - neid nullist kodeerides! (Ehkki VB .NET sisaldab mitmeid väga käepäraseid koodilõike, mis võivad teid tõesti aidata.)

GDI + kodeerimiseks kasutate objekte ja nende liikmeid paljudest .NET nimeruumidest. (Praegu on need tegelikult lihtsalt Windows OS-i objektide ümbriskoodid, mis seda tööd tegelikult teevad.)

Nimeruumid

GDI + nimeruumid on:

Süsteem. Joonistamine

See on tuum GDI + nimeruum. See määratleb objektid peamiseks renderdamiseks (fonte, pliiatsid, põhiharjad jne) ja kõige olulisem objekt: graafika. Näeme sellest lähemalt vaid mõnes lõigus.

Süsteem. Joonistamine. Joonis2D

See annab teile objektid täpsemaks kahemõõtmeliseks vektorgraafikaks. Mõned neist on gradiendipintslid, pliiatsi korgid ja geomeetrilised teisendused.

Süsteem. Joonistamine. Kujutised

Kui soovite muuta graafilisi pilte - st muuta paletti, ekstraheerida pildi metaandmeid, manipuleerida metafailidega ja nii edasi -, siis vajate seda.

Süsteem. Joonistamine. Trükkimine

Piltide printimiseks prinditud lehele, printeri endaga suhtlemiseks ja prinditöö üldilme vormindamiseks kasutage siin olevaid objekte.

Süsteem. Joonistamine. Tekst

Selle nimeruumiga saate kasutada fondikogusid.

Graafika objekt

GDI + alustamiseks on see koht Graafika objekt. Ehkki joonistatud asju kuvatakse teie monitoril või printeril, on graafikaobjekt "lõuend", millele joonistate.

Kuid objekt Graafika on ka üks esimesi segaduse allikaid GDI + kasutamisel. Graafikaobjekt on alati seotud kindlaga seadme kontekst. Esimene probleem, millega praktiliselt iga uus GDI + õpilane kokku puutub, on järgmine: "Kuidas saada graafikaobjekti?"

Põhimõtteliselt on kaks võimalust:

  1. Võite kasutada e sündmuse parameeter, mis edastatakse OnPaint sündmus koos PaintEventArgs objekt. Mitmed sündmused läbivad PaintEventArgs ja saate kasutada viitamaks graafikaobjektile, mida seadme kontekstis juba kasutatakse.
  2. Võite kasutada LooGraafika meetod seadme konteksti jaoks graafikaobjekti loomiseks.

Siin on esimese meetodi näide:

Kaitstud alistamine onPaint (_. ByVal e As süsteem. Windows. Vormid. PaintEventArgs) Dim g nagu graafika = e. Graafika. g. DrawString ("About Visual Basic" & vbCrLf _. & "ja GDI +" & vbCrLf & "Suur meeskond", _. Uus font ("Times New Roman", 20), _. Pintslid. Firebrick, 0, 0) MyBase. OnPaint (e) Lõpu alam

Illustratsiooni kuvamiseks klõpsake siin

Lisage see standardse Windowsi rakenduse klassi Form1, et see ise kodeerida.

Selles näites on vormi jaoks graafiline objekt juba loodud Vorm1. Kõik teie kood peab olema luua selle objekti kohalik eksemplar ja kasutada seda sama vormi joonistamiseks. Pange tähele, et teie kood Alistab OnPaint meetod. Sellepärast MyBase. OnPaint (e) teostatakse lõpus. Peate veenduma, et kui põhiobjekt (see, mida te ületate) teeb midagi muud, saab see võimaluse. Sageli töötab teie kood ilma selleta, kuid see on hea mõte.

PaintEventArgs

Graafikaobjekti saate ka, kasutades PaintEventArgs objekt, mis antakse teie koodile OnPaint ja OnPaintBackgroundi meetodid vormist. PrintPageEventArgs möödunud a PrintPage sündmus sisaldab printimiseks graafikaobjekti. Mõne pildi jaoks on isegi võimalik saada graafikaobjekt. See võimaldab teil maalida pildi otse nii, nagu värviksite vormi või komponendi.

Ürituste käitleja

Teine meetodi variant on sündmuse käitleja lisamine Värvi üritus vormi jaoks. See kood näeb välja järgmine:

Privaatne alamvorm1_maal (_. ByVal saatja kui objekt, _. ByVal e As süsteem. Windows. Vormid. PaintEventArgs) _. Käsitleb mind. Värvi. Dim g Nagu graafika = e. Graafika. g. DrawString ("About Visual Basic" & vbCrLf _. & "ja GDI +" & vbCrLf & "Suur meeskond", _. Uus font ("Times New Roman", 20), _. Pintslid. Firebrick, 0, 0) Lõpu alam

LooGraafika

Teine meetod graafikaobjekti saamiseks koodiks kasutab a LooGraafika meetod, mis on saadaval paljude komponentidega. Kood näeb välja selline:

Privaatne alamnupp1_Kliki (_. ByVal saatja kui süsteem. Objekt, _. ByVal e As süsteem. EventArgs) _. Käepidemed Button1.Click. Dim g = mina. LooGraafika. g. DrawString ("About Visual Basic" & vbCrLf _. & "ja GDI +" & vbCrLf & "Suur meeskond", _. Uus font ("Times New Roman", 20), _. Pintslid. Firebrick, 0, 0) Lõpu alam

Siin on paar erinevust. See asub Button1.Kliki sündmus, sest millal Vorm1 maalib end uuesti Koormus sündmus, meie graafika on kadunud. Seega peame need hilisemal sündmusel lisama. Selle kodeerimisel märkate, et graafika on kadunud Vorm1 tuleb ümber joonistada. (Selle nägemiseks jäljendage ja maksimeerige uuesti.) See on esimese meetodi kasutamisel suur eelis.

Enamik viiteid soovitab kasutada esimest meetodit, kuna teie graafika värvitakse automaatselt uuesti. GDI + võib olla keeruline!