GDI + grafika a Visual Basic .NET bemutatójában

GDI + az a forma, betűkészletek, képek vagy általában bármi grafikus rajzolása Visual Basic .HÁLÓ.

Ez a cikk a GDI + használatának a Visual Basic .NET-ben való teljes bevezetésének első része.

A GDI + a .NET szokatlan része. Itt volt a .NET előtt (a GDI + kiadásra került a Windows XP-vel), és nem ugyanazokkal a frissítési ciklusokkal rendelkezik, mint a .NET-keretrendszer. A Microsoft dokumentációja általában kimondja, hogy a Microsoft Windows GDI + egy API C / C ++ programozók a Windows operációs rendszerbe. De a GDI + is magában foglalja a a VB.NET-ben használt névterek szoftver alapú grafikus programozáshoz.

WPF

De ez nem az csak a Microsoft által biztosított grafikus szoftver, különösen a Framework 3.0 óta. A Vista és a 3.0 bevezetésekor a teljesen új WPF bevezetésre került. A WPF magas szintű, hardveresen gyorsított megközelítés a grafika számára. Ahogy Tim Cahill, a Microsoft WPF szoftvercsapatának tagja mondja, a WPF-rel "magas színvonalú konstrukciókkal írja le jelenetét, és aggódnunk kell a pihenés. "És az a tény, hogy a hardver gyorsult, azt jelenti, hogy nem kell lehúznia a PC-processzor működését, rajzolva alakzatokat a képernyő. Az igazi munka nagy részét a grafikus kártya végzi.

instagram viewer

De már itt is voltunk. Minden „nagy előrelépést” általában néhány hátracsúszás kísér, és emellett évekbe telti, amíg a WPF végiggondolja magát a GDI + kód zillionnyi byte-ján. Ez különösen igaz, mivel a WPF csaknem azt feltételezi, hogy nagy teljesítményű rendszerrel dolgozik, sok memóriával és forró grafikus kártyával. Ezért sok számítógép nem tudta futtatni a Vistát (vagy legalábbis használni a Vista "Aero" grafikát) az első bevezetésekor. Tehát ez a sorozat továbbra is elérhető a webhelyen, bárki számára, aki továbbra is használja.

Jó Ol kód

A GDI + nem olyan elem, amelyet rá lehet húzni olyan űrlapra, mint a VB.NET többi összetevője. Ehelyett a GDI + objektumokat általában a régi módon kell hozzáadni - a semmiből történő kódolással! (Bár a VB .NET tartalmaz számos nagyon praktikus kódrészletet, amelyek valóban segíthetnek neked.)

A GDI + kódolásához objektumokat és azok tagjait használják számos .NET névtérből. (Jelenleg ezek valójában csak a Windows OS objektumok csomagoló kódjai, amelyek valóban elvégzik a munkát.)

névterek

A GDI + névterei:

Rendszer. Rajz

Ez az központi GDI + névtér. Meghatározza az alapvető megjelenítés objektumait (betűtípusok, tollak, alapkefék stb.) és a legfontosabb tárgy: Grafika. Néhány bekezdéssel többet fogunk látni erről.

Rendszer. Rajz. Drawing2D

Ez tárgyakat ad a fejlettebb kétdimenziós vektorgrafikákhoz. Néhány ezek a gradienskefék, a tollsapkák és a geometriai transzformációk.

Rendszer. Rajz. leképezés

Ha meg akarja változtatni a grafikus képeket - vagyis megváltoztatni a palettát, kibontani a kép metaadatait, manipulálni a metafájlokat és így tovább -, akkor erre van szüksége.

Rendszer. Rajz. Nyomtatás

Ha képeket szeretne megjeleníteni a kinyomtatott oldalra, együttműködni magával a nyomtatóval, és formázni a nyomtatási feladat általános megjelenését, használja az itt található objektumokat.

Rendszer. Rajz. Szöveg

Ebben a névtérben betűkészlet-gyűjteményeket is használhat.

Grafikai objektum

A GDI + programmal kezdődik a Grafika tárgy. Bár a rajzok megjelennek a monitoron vagy a nyomtatón, a Grafika objektum az a "vászon", amelyre rajzol.

A Graphics objektum ugyanakkor az egyik első zavart okoz a GDI + használatakor. A Grafikai objektumot mindig társítják egy adotthoz eszközkörnyezet. Tehát az első probléma, amellyel gyakorlatilag minden új GDI + hallgató szembesül: "Hogyan szerezhetek be egy grafikai objektumot?"

Alapvetően kétféle módon létezik:

  1. Használhatja a e eseményparaméter, amelyet átadnak az OnPaint esemény a PaintEventArgs tárgy. Számos esemény halad át a PaintEventArgs és a gombbal hivatkozhat a Grafikai objektumra, amelyet az eszköz kontextusa már használ.
  2. Használhatja a CreateGraphics módszer az eszköz kontextusában egy grafikus objektum létrehozására.

Íme egy példa az első módszerre:

Védett felülbírálja a Sub OnPaint alkalmazást (_. ByVal e As rendszer. Ablakok. Formákat. PaintEventArgs) Dim g as Graphics = e. Grafika. g. DrawString ("A Visual Basicről" & vbCrLf _. & "és GDI +" & vbCrLf & "Egy nagy csapat", _. Új betűtípus ("Times New Roman", 20), _. Ecsetek. Firebrick, 0, 0) MyBase. OnPaint (e) Befejezés Sub

Kattintson ide az ábra megjelenítéséhez

Adja hozzá ezt a Form1 osztályhoz egy szabványos Windows alkalmazáshoz, hogy saját maguk kódolja.

Ebben a példában egy grafikus objektum már létre van hozva az űrlaphoz Form1. Kódjának csupán az kell, hogy hozzon létre egy helyi példányt az objektumról, és ugyanazon űrlap rajzolásához használja. Vegye figyelembe, hogy a kódja felülírásai az OnPaint eljárás. Ezért MyBase. OnPaint (e) a végén kerül végrehajtásra. Gondoskodnod kell arról, hogy ha az alapobjektum (amelyet felülbírálsz) valami mást csinál, akkor lehetősége van rá. A kód gyakran nem működik, de ez jó ötlet.

PaintEventArgs

Grafikai objektumokat is kaphat a PaintEventArgs a kódhoz átadott tárgy a OnPaint és OnPaintBackground módszerek egy forma. Az PrintPageEventArgs átadva a PrintPage Az esemény tartalmaz egy grafikus objektumot a nyomtatáshoz. Néhány képhez grafikus objektum is beszerezhető. Ez lehetővé teszi, hogy közvetlenül a képre festsen, ugyanúgy, mint az űrlapra vagy az alkatrészre.

Eseménykezelő

Az egyik módszer egy másik változata, ha eseménykezelőt ad hozzá a Festék esemény a forma számára. Így néz ki ez a kód:

1. magánalkalmazás_festék (_. ByVal feladó mint objektum, _. ByVal e As rendszer. Ablakok. Formákat. PaintEventArgs) _. Kezel engem. Festék. Dim g as Graphics = e. Grafika. g. DrawString ("A Visual Basicről" & vbCrLf _. & "és GDI +" & vbCrLf & "Egy nagy csapat", _. Új betűtípus ("Times New Roman", 20), _. Ecsetek. Firebrick, 0, 0) Befejezés Sub

CreateGraphics

A második módszer, amellyel grafikus objektumot szerezhet a kódhoz, a CreateGraphics módszer, amely számos összetevővel elérhető. A kód így néz ki:

Privát algomb1_Kattintás (_. A ByVal feladó mint rendszer. Tárgy, _. ByVal e As rendszer. EventArgs) _. Fogantyúk Button1.Click. Dim g = én. CreateGraphics. g. DrawString ("A Visual Basicről" & vbCrLf _. & "és GDI +" & vbCrLf & "Egy nagy csapat", _. Új betűtípus ("Times New Roman", 20), _. Ecsetek. Firebrick, 0, 0) Befejezés Sub

Van itt néhány különbség. Ez a Button1.Click esemény, mert mikor Form1 átfesti magát a Betöltés esemény esetén a grafikánk elveszik. Tehát egy későbbi eseményben hozzá kell adnunk őket. Ha ezt kódolja, észreveszi, hogy a grafika elveszik, amikor Form1 újrarajzolni kell. (Utánozza és maximalizálja, hogy ezt meglássa.) Ez nagy előnye az első módszer használatának.

A legtöbb referencia az első módszer használatát javasolja, mivel a grafikákat automatikusan újrafestik. A GDI + trükkös lehet!