Grafika GDI + v príručke Visual Basic .NET

GDI + je spôsob, ako nakresliť tvary, písma, obrázky alebo vo všeobecnosti niečo grafické Visual Basic NET.

Tento článok je prvou časťou úplného úvodu do používania GDI + v jazyku Visual Basic .NET.

GDI + je neobvyklá súčasť .NET. Bolo tu pred .NET (GDI + bol prepustený so systémom Windows XP) a nezdieľa rovnaké aktualizačné cykly ako .NET Framework. V dokumentácii spoločnosti Microsoft sa zvyčajne uvádza, že rozhranie Microsoft Windows GDI + je API C / C ++ programátorov do operačného systému Windows. Ale GDI + tiež zahŕňa namespaces používané vo VB.NET pre programovanie grafiky na báze softvéru.

WPF

Ale to nie je iba grafický softvér poskytovaný spoločnosťou Microsoft, najmä od verzie 3.0. Keď boli predstavené systémy Vista a 3.0, bol predstavený úplne nový WPF. WPF je hardvérovo akcelerovaný prístup k grafike na vysokej úrovni. Ako hovorí Tim Cahill, člen softvérového tímu Microsoft WPF, pomocou WPF „opíšete svoju scénu pomocou konštruktov na vysokej úrovni a my sa budeme starať o odpočinok. “A skutočnosť, že je to hardvérové ​​zrýchlenie, znamená, že nemusíte ťahať nadol činnosť vášho počítača, ktorý kreslí tvary na obrazovka. Väčšinu skutočnej práce vykonáva vaša grafická karta.

instagram viewer

Boli sme tu však predtým. Každý „veľký skok vpred“ je zvyčajne sprevádzaný niekoľkými pokleskami dozadu a okrem toho bude trvať roky, kým WPF prepracuje zillióny bajtov kódu GDI +. Platí to najmä preto, že WPF len predpokladá, že pracujete s vysoko výkonným systémom s množstvom pamäte a horúcou grafickou kartou. Preto mnoho počítačov nemohlo pri prvom uvedení na trh spustiť systém Vista (alebo aspoň používať grafiku Vista „Aero“). Táto séria je teda naďalej k dispozícii na webe pre všetkých, ktorí ju potrebujú naďalej používať.

Dobrý kód Ol '

GDI + nie je niečo, čo môžete pretiahnuť do formulára ako ostatné komponenty vo VB.NET. Namiesto toho musia byť objekty GDI + spravidla pridané starým spôsobom - ich kódovaním od začiatku! (Aj keď VB .NET obsahuje množstvo veľmi užitočných útržkov kódu, ktoré vám môžu skutočne pomôcť.)

Na kódovanie GDI + použijete objekty a ich členov z niekoľkých menných priestorov .NET. (V súčasnosti sa jedná iba o kód obalu pre objekty Windows OS, ktoré skutočne pracujú.)

menné priestory

Menné priestory v GDI + sú:

Systém. kreslenie

Toto je základné menný priestor GDI +. Definuje objekty na základné vykreslenie (fonty, perá, základné štetce atď.) a najdôležitejší objekt: grafika. Viac o tom uvidíme v niekoľkých odsekoch.

Systém. Kreslenie. Drawing2D

Získate tak objekty pre pokročilejšiu dvojrozmernú vektorovú grafiku. Niektoré z nich sú štetce s gradientom, čiapky pera a geometrické transformácie.

Systém. Kreslenie. imaging

Ak chcete zmeniť grafické obrázky - to znamená, zmeniť paletu, extrahovať metadáta obrázka, manipulovať s metasúbormi atď. - toto je ten, ktorý potrebujete.

Systém. Kreslenie. tlač

Na vykreslenie obrázkov na tlačenú stránku, interakciu so samotnou tlačiarňou a naformátovanie celkového vzhľadu tlačovej úlohy použite tu použité objekty.

Systém. Kreslenie. text

S týmto menným priestorom môžete používať zbierky písiem.

Grafický objekt

Miesto, kde začať s GDI +, je grafika objekt. Aj keď sa položky, ktoré nakreslíte, zobrazia na monitore alebo tlačiarni, grafický objekt je „plátno“, na ktoré kreslíte.

Grafický objekt je však tiež jedným z prvých zdrojov zámeny pri používaní GDI +. Grafický objekt je vždy spojený s konkrétnou kontext zariadenia. Prvým problémom, ktorému prakticky každý nový študent GDI + čelí, je: „Ako získam grafický objekt?“

V zásade existujú dva spôsoby:

  1. Môžete použiť e parameter udalosti, ktorý sa odovzdáva do OnPaint udalosť s PaintEventArgs objekt. Niekoľko udalostí prejde PaintEventArgs a môžete použiť na označenie grafického objektu, ktorý sa už používa v kontexte zariadenia.
  2. Môžete použiť CreateGraphics metóda pre kontext zariadenia na vytvorenie grafického objektu.

Tu je príklad prvej metódy:

Chránené nahradenia Sub OnPaint (_. ByVal e As System. Windows. Formy. PaintEventArgs) Dim g As Graphics = e. Grafiky. g. DrawString („O jazyku Visual Basic“ a vbCrLf _. & "a GDI +" & vbCrLf & "A Great Team", _. Nové písmo ("Times New Roman", 20), _. Kefy. Firebrick, 0, 0) MyBase. OnPaint (e) End Sub

Kliknutím sem zobrazíte ilustráciu

Pridajte ho do triedy Form1 pre štandardnú aplikáciu Windows a kódujte ho sami.

V tomto príklade je už pre formulár vytvorený grafický objekt Form1. Všetko, čo musíte urobiť, je vytvoriť lokálnu inštanciu tohto objektu a použiť ju na vykreslenie toho istého formulára. Všimnite si, že váš kód prepisy OnPaint metóda. Preto MyBase. OnPaint (e) sa vykoná na konci. Musíte sa ubezpečiť, že ak základný objekt (ten, ktorý prepíšete) robí niečo iné, dostane šancu to urobiť. Bez tohto kódu často váš kód funguje, ale je to dobrý nápad.

PaintEventArgs

Grafický objekt môžete získať aj pomocou PaintEventArgs objekt odovzdaný váš kód v OnPaint a Metódy OnPaintBackground formulára. PrintPageEventArgs prešiel v PrintPage udalosť bude obsahovať grafický objekt na tlač. Pre niektoré obrázky je dokonca možné získať grafický objekt. To vám umožní maľovať priamo na obrázok rovnakým spôsobom, ako by ste maľovali na formulár alebo komponent.

Obsluha udalostí

Ďalšou variáciou metódy jedna je pridanie obsluhy udalostí pre maľovať udalosť pre formulár. Ako vyzerá tento kód:

Súkromný pod Form1_Paint (_. Odosielateľ ByVal ako objekt, _. ByVal e As System. Windows. Formy. PaintEventArgs) _. Zvládne ma. Maľovať. Dim g As Graphics = e. Grafiky. g. DrawString („O jazyku Visual Basic“ a vbCrLf _. & "a GDI +" & vbCrLf & "A Great Team", _. Nové písmo ("Times New Roman", 20), _. Kefy. Firebrick, 0, 0) End Sub

CreateGraphics

Druhá metóda získania grafického objektu pre váš kód používa CreateGraphics metóda, ktorá je k dispozícii s mnohými komponentmi. Kód vyzerá takto:

Private Sub Button1_Click (_. ByVal odosielateľ ako systém. Objekt, _. ByVal e As System. EventArgs) _. Rukoväte Button1.Click. Dim g = Me. CreateGraphics. g. DrawString („O jazyku Visual Basic“ a vbCrLf _. & "a GDI +" & vbCrLf & "A Great Team", _. Nové písmo ("Times New Roman", 20), _. Kefy. Firebrick, 0, 0) End Sub

Existuje tu niekoľko rozdielov. Toto je v Button1.Click udalosť, pretože kedy Form1 maľuje sa v Naložiť udalosti, naša grafika sa stratila. Preto ich musíme pridať v neskoršej udalosti. Ak to kódujete, všimnete si, že keď sa grafika stratí Form1 musí byť prepracované. (Mimimize a maximum maximalizovať to vidieť.) To je veľká výhoda pri použití prvej metódy.

Väčšina odkazov odporúča použitie prvej metódy, pretože vaša grafika bude automaticky prefarbená. GDI + môže byť zložité!