„GDI +“ grafika „Visual Basic .NET“ mokymo programoje

GDI + yra būdas piešti formas, šriftus, paveikslėlius ar apskritai bet kurį paveikslėlį Visual Basic .NET.

Šis straipsnis yra pirmoji visiško įvado apie GDI + naudojimą Visual Basic .NET dalyje.

GDI + yra neįprasta .NET dalis. Tai buvo čia prieš .NET („GDI +“ buvo išleistas su „Windows XP“) ir jis nesidalija tais pačiais atnaujinimo ciklais kaip .NET Framework. „Microsoft“ dokumentuose paprastai teigiama, kad „Microsoft Windows GDI +“ yra API C / C ++ programuotojų į „Windows OS“. Bet GDI + taip pat apima vardų vietos, naudojamos VB.NET programinės įrangos grafikos programavimui.

WPF

Bet tai ne tas tik grafikos programinė įranga, kurią teikia „Microsoft“, ypač nuo „Framework 3.0“. Kai buvo pristatyta „Vista“ ir 3.0, kartu buvo pristatytas visiškai naujas WPF. WPF yra aukšto lygio, aparatinės įrangos pagreitintas požiūris į grafiką. Kaip teigia Tim Cahill, „Microsoft WPF“ programinės įrangos komandos narys, su WPF „jūs apibūdinate savo sceną naudodamiesi aukšto lygio konstrukcijomis ir mes nerimaujame dėl pailsėti. "O tai, kad paspartinta aparatinė įranga, reiškia, kad jums nereikia vilkti kompiuterio procesoriaus, piešiant figūras ant ekranas. Didžiąją dalį tikro darbo atlieka jūsų vaizdo plokštė.

instagram viewer

Tačiau mes jau buvome čia anksčiau. Kiekvieną „didelį šuolį į priekį“ paprastai lydi keli suklupimai atgal, be to, prireiks metų, kol WPF dirbs per daugybę baitų GDI + kodo. Tai ypač pasakytina apie tai, kad WPF beveik daro prielaidą, kad dirbate su labai galinga sistema, turinčia daug atminties ir įkaitusi grafikos plokštę. Štai kodėl daugelis kompiuterių negalėjo paleisti Vista (arba bent jau naudoti Vista "Aero" grafiką), kai ji buvo pirmą kartą pristatyta. Taigi ši serija ir toliau yra prieinama visiems ir visiems, kuriems vis dar reikia ja naudotis.

„Geras ol“ kodas

„GDI +“ nėra kažkas, ką galite vilkti į formą, kaip kiti komponentai VB.NET. Vietoj to, GDI + objektai paprastai turi būti pridedami senuoju būdu - užkoduojant juos nuo nulio! (Nors į VB .NET yra keletas labai patogių kodo fragmentų, kurie tikrai gali jums padėti.)

Norėdami koduoti GDI +, naudojate objektus ir jų narius iš daugybės .NET vardų sričių. (Šiuo metu tai iš tikrųjų yra tik „Windows OS“ objektų, kurie iš tikrųjų atlieka šį darbą, apklijavimo kodas.)

Vardų tarpai

Vardų vietos GDI + yra:

Sistema. Piešimas

Tai yra pagrindinė GDI + vardų sritis. Tai apibrėžia pagrindinio pateikimo objektus (šriftai, rašikliai, pagrindiniai šepetėliai ir kt.) ir svarbiausias objektas: Grafika. Daugiau apie tai pamatysime tik keliose pastraipose.

Sistema. Piešimas. Piešimas2D

Tai suteikia objektus sudėtingesnei dviejų dimensijų vektorinei grafikai. Kai kurie iš jų yra gradiento šepetėliai, rašiklio dangteliai ir geometrinės transformacijos.

Sistema. Piešimas. Vaizduojamasis

Jei norite pakeisti grafinius vaizdus - tai yra, pakeisti paletę, išgauti vaizdų metaduomenis, manipuliuoti meta failais ir tt - štai ko jums reikia.

Sistema. Piešimas. Spausdinimas

Norėdami atvaizdus atvaizduoti į spausdintą puslapį, sąveikauti su pačiu spausdintuvu ir suformatuoti bendrą spausdinimo užduoties išvaizdą, naudokite čia esančius objektus.

Sistema. Piešimas. Tekstas

Su šia vardų sritimi galite naudoti šriftų rinkinius.

Grafikos objektas

Pradėti nuo GDI + yra ta vieta Grafika objektas. Nors piešiami dalykai rodomi monitoriuje ar spausdintuve, grafikos objektas yra „drobė“, ant kurios piešiate.

Bet grafikos objektas taip pat yra vienas iš pirmųjų painiavos šaltinių naudojant GDI +. Objektas Grafika visada yra susijęs su konkrečiu įrenginio kontekstas. Taigi pirmoji problema, su kuria susiduria beveik kiekvienas naujas GDI + studentas, yra „Kaip gauti grafikos objektą?“

Iš esmės yra du būdai:

  1. Galite naudoti e įvykio parametras, kuris perduodamas „OnPaint“ renginys su „PaintEventArgs“ objektas. Keletas įvykių praeina „PaintEventArgs“ ir galite naudoti nuorodą į grafikos objektą, kurį jau naudoja įrenginio kontekstas.
  2. Galite naudoti „CreateGraphics“ metodas prietaiso kontekstui sukurti grafikos objektą.

Štai pirmojo metodo pavyzdys:

Apsaugotas nepaisymas „OnPaint“ (_. „ByVal e As“ sistema. „Windows“. Formos. PaintEventArgs) Dim g as Graphics = e. Grafika. g. „DrawString“ („Apie„ Visual Basic “& vbCrLf _. & "ir GDI +" & vbCrLf & "Puiki komanda", _. Naujasis šriftas („Times New Roman“, 20), _. Šepečiai. „Firebrick“, 0, 0) „MyBase“. „OnPaint“ (e) Pabaigos poskyris

Spustelėkite čia, norėdami pamatyti iliustraciją

Pridėkite tai į standartinės „Windows“ programos „Form1“ klasę, kad patys ją užkoduotumėte.

Šiame pavyzdyje grafikos objektas jau yra sukurtas formai 1 forma. Viskas, ką turite padaryti, yra sukurti vietinį to objekto egzempliorių ir naudoti jį piešti toje pačioje formoje. Atminkite, kad jūsų kodas Nepaisoma „OnPaint“ metodas. Štai kodėl „MyBase“. „OnPaint“ (e) yra įvykdytas pabaigoje. Turite įsitikinti, kad jei bazinis objektas (tas, kurį jūs viršinate) daro ką nors kita, jis turi galimybę tai padaryti. Dažnai jūsų kodas veikia be to, tačiau tai gera idėja.

„PaintEventArgs“

Taip pat galite gauti grafikos objektą naudodami „PaintEventArgs“ objektas perduotas jūsų kodui „OnPaint“ ir „OnPaintBackground“ metodai formos. „PrintPageEventArgs“ praėjo a „PrintPage“ įvykyje bus grafikos objektas spausdinimui. Net kai kuriuos vaizdus įmanoma gauti su grafikos objektu. Tai gali jums suteikti galimybę piešti tiesiai ant paveikslėlio taip, kaip jūs piešdami ant formos ar komponento.

Renginių vedėjas

Kitas pirmojo metodo variantas yra pridėti įvykių tvarkytuvą Tapyti renginys formai. Štai kaip atrodo šis kodas:

Asmeninė antrinė forma1_paveikslėlis (_. „ByVal“ siuntėjas kaip objektas, _. „ByVal e As“ sistema. „Windows“. Formos. „PaintEventArgs“). Tvarko mane. Tapyti. Dim g Kaip Grafika = e. Grafika. g. „DrawString“ („Apie„ Visual Basic “& vbCrLf _. & "ir GDI +" & vbCrLf & "Puiki komanda", _. Naujasis šriftas („Times New Roman“, 20), _. Šepečiai. „Firebrick“, 0, 0) Pabaigos poskyris

„CreateGraphics“

Antrasis būdas gauti grafikos objektą jūsų kodui naudoti „CreateGraphics“ metodas, kurį galima įsigyti su daugeliu komponentų. Kodas atrodo taip:

Asmeninis antrinis mygtukas1_Spustelėkite (_. „ByVal“ siuntėjas kaip sistema. Objektas, _. „ByVal e As“ sistema. EventArgs) _. Rankenėlės Mygtukas1.Spustelėkite. Dim g = aš. „CreateGraphics“. g. „DrawString“ („Apie„ Visual Basic “& vbCrLf _. & "ir GDI +" & vbCrLf & "Puiki komanda", _. Naujasis šriftas („Times New Roman“, 20), _. Šepečiai. „Firebrick“, 0, 0) Pabaigos poskyris

Čia yra pora skirtumų. Tai yra Mygtukas1.Spustelėkite įvykis, nes kada 1 forma perdažys save Apkrova įvykis, mūsų grafika prarasta. Taigi mes turime juos įtraukti į vėlesnį renginį. Jei koduosite tai, pastebėsite, kad grafika prarandama 1 forma turi būti perdarytas. (Dar kartą pamėgdžiokite ir padidinkite, kad tai pamatytumėte.) Tai didelis privalumas naudojant pirmąjį metodą.

Daugelyje nuorodų rekomenduojama naudoti pirmąjį metodą, nes jūsų paveikslėliai bus perdažomi automatiškai. GDI + gali būti sudėtinga!