Archív Inet.sk Pôvodný autor: Peter Hrdlica
25. 08. 2010 o 00:00 2946x

Visual Basic.NET – 10. diel

Dnes dokončíme záležitosti spojené s grafikou a s rozhraním GDI+. Ukážeme si pár nových prvkov a techník a opäť ako vždy doplníme potrebným množstvom obrazového materiálu. Príjemné čítanie!
Visual Basic.NET – 10. diel

Úvod

           

            Prajem príjemný dobrý deň. Tak ako som sľúbil, dnes budeme pokračovať v našom seriály so základmi vykresľovania pomocou GDI+. Ukážeme si ako nakresliť ďalší obrazec a ako rôzne pracovať s jeho výplňou a aj to ako na formulár vykreslíme obrázok, ktorý sme si napr. stiahli niekde z internetu. A keďže žiadny program nemôže zostať bez popisu tak si ukážeme ako na formulár pomocou GDI+ dostať aj nejaký ten text.

 

(Nepravidelné) mnohouholníky – polygóny

 

            Ako príklad kresby mnohouholníka som si vybral lichobežník. Definícia znie: „Lichobežník je štvoruholník, ktorého dve strany sú rovnobežné (podstavy) a dve rôznobežné (ramená).  Po definícii pera sa dáme na definíciu bodov, z ktorých sa bude mnohouholník skladať:

 

Dim bod1 As New Point(50, 50) 'ľavý horný bod

Dim bod2 As New Point(150, 50) ' pravý horný bod

Dim bod3 As New Point(180, 150) ' pravý dolný bod  

Dim bod4 As New Point(20, 150) ' ľavý doolný bod

 

Funkcia DrawPolygon má dva parametre: prvý je pero a druhý je pole bodov, ktoré sa určujú tvar polygónu (mnohouholníka). Preto ešte musíme body, ktoré sme si už zadeklarovali, vložiť do poľa:

 

Dim pole_bodov As Point() = {bod1, bod2, bod3, bod4}

 

Miesto deklarácie bodu cez Point ho môžeme deklarovať aj cez PointF. Hlavným rozdielom týchto dvoch určení bodu je v tom, že Point uchováva súradnice X a Y v premennej typu Integer, zatiaľ čo PointF (f ako floating = plávajúci, pohyblivý) ukladá čísla s desatinnou čiarkou, vďaka čomu sa môžete dopracovať vyššej presnosti. Teraz nám už neostáva nič iné, iba nakresliť obrazec:

 

e.Graphics.DrawPolygon(pero, pole_bodov)

Kresba lichobežníka

Ak bol Váš postup správny, dostanete podobný obrázok. Ak ste prehodili napr. tretí a štvrtý bod, dostanete akýsi tvar pripomínajúci presýpacie hodiny.

Rozšírená práca s obrazcami

 

            Doteraz sme obrazce kreslili tak, že vidieť bol iba ich obrys a pozadie presvitalo z objektov pod ním. V tejto chvíli si ukážeme ako obrazce rôznymi spôsobmi vyplniť. K vyfarbovaniu geometrických obrazcov sa využívajú funkcie s predponou „fill“ ako napr. FillEllipse alebo FillRectangle. Najdôležitejšia zmena oproti funkciám s predponou „draw“ ako napr. DrawEllipse a DrawRectangle, ktoré sme si popísali už v minulom diely, je prvý parameter. Tento krát nebudeme používať pero (Pen), ale štetec – Brush. Deklarácia vyzerá nasledovne:

 

Dim stetec As New SolidBrush(Color.Beige)

 

Aby sme nadviazali na predchádzajúci text, vypĺňať budeme náš lichobežník. Použijeme rovnaké body ako v predchádzajúcom príklade a teda funkcia na kresbu bude vyzerať približne takto:

 

e.Graphics.FillPolygon(stetec, pole_bodov)

 

Kresba lichobežníka s výplňou

 

 

Pokiaľ by sme chceli vyfarbovať obrazec „inak“, napr. šrafovať, kresliť do výplne krúžky, bodky, trojuholníčky a i. tak musíme volať namespace System.Drawing.Drawing2D v hlavičke programu.

 

Pokročilí štetec nadefinujeme pomocou triedy HatchBrush a to zhruba nasledovne:

 

Dim iny_stetec As New HatchBrush(HatchStyle.Sphere, Color.CornflowerBlue, Color.AliceBlue)

A tento štetec opäť aplikujeme na náš, snáď už obľúbený, lichobežník:
 

e.Graphics.FillPolygon(iny_stetec, pole_bodov)

 Textúrová výplň obrazca

 

Vzor výplne môžete vyberať zo skutočne veľkého množstva. Len pre ilustráciu vymenujem zopár druhov:  HorizontalBrick, Percent40, DiagonalCross, Wave, Weave, Sphere, SolidDIamond, ZigZag a mnohé ďalšie.

 

Ako ďalší druh štetca si ukážeme LinearGradientBrush. Tento štetec vypĺňa obrazec plynulým prechodom dvoch farieb. Konštruktor má 4 parametre: počiatočný bod, konečný bod a dve farby pričom prvá patrí k počiatočnému a druhá ku koncovému bodu. Môj zápis vyzerá takto:

 

Dim stetec As New LinearGradientBrush(New Point(50, 50), New Point(180, 150), Color.PaleVioletRed, Color.Chartreuse)

 

Štetec som opäť aplikoval na lichobežník a dostal som tento výsledok:

Farebný prechod ako výplň lichobežníka

 

Aktuálne sa výplň prelína z ľavého horného rohu smerom k pravému dolnému. Stačí zmeniť počiatočný a konečný bod pre dosiahnutie iného prelínania. Nasledujúci kód je zmenený tak, že sa bude farba prelínať od hornej podstavy k spodnej.

 

Dim stetec As New LinearGradientBrush(New Point(90, 50), New Point(90, 150), Color.PaleVioletRed, Color.Chartreuse)

DrawString alebo bez popisku ani krok

            Geometrické tvary nie sú to jediné, čo môžeme pomocou GDI+ na formulár kresliť. Tak si predstavte, že pomocou toho čo ste sa už naučili nakreslíte nejaký graf. A čo teraz? Ako budete vedieť ktorá časť grafu patrí ku ktorým dátam? Jednoducho, pridáme text pomocou funkcie DrawString. Prvým parametrom tejto funkcie nie je farba pera, ale samotný textový reťazec, ktorý budeme vykresľovať (draw = kresliť). Druhým parametrom bude rez písma, teda font; tretím farba a posledným, štvrtým, bude počiatočný bod od ktorého sa text bude vykresľovať. Môj zápis vyzerá takto:

 

e.Graphics.DrawString("Toto je testovací text", Me.Font, Brushes.Crimson, 80, 80)

 

Veľkosť aj rez písma som si predal z nastavení formulára a farbu vybral priamo v konštruktore. Ak by sme aj rez písma chceli vyberať v konštruktore metódy DrawString zápis by vyzeral použili by sme príkaz podobný ako pri zadávaní nového bodu:


New Font("Courier New", 12, FontStyle.Bold)


Celý zápis by vyzeral teda takto:


e.Graphics.DrawString("Toto je testovací text", New Font("Courier New", 12, FontStyle.Bold), Brushes.Crimson, 80, 80)


DrawBitmap alebo ako dostať na formulár hotový obrázok

            Posledný zo spôsobov práce pomocou GDI+ ktorý si dnes ukážeme je vykresľovanie hotového obrázku na formulár. K tomu slúži funkcia DrawBitmap. Tá obsahuje niekoľko parametrov z ktorých si povieme o dvoch a to o ceste k obrázku a o parametri určujúcom jeho ľavý horný roh.

 

e.Graphics.DrawImage(New Bitmap("c:cesta_k_obrazku.pripona"), New Point(0, 0))

 

Cestu zadávame cez New Bitmap preto, aby si VB vopred vytvoril z predaného obrázku mapu bitov a tie potom po jednom vykreslil na určené miesto. Spomenul som, že funkcia DrawImage má viac parametrov, medzi nimi sa nachádza napr. možnosť zmeny šírky a výšky, možnosť „napasovať“ obrázok do určitého obdĺžnika a i.

 

Záver

            Týmto ste dočítal sériu zameranú na programovanie grafických prvkov a efektov vo VB.NET pomocou rozhrania GDI+. Ak máte nejaké otázky či návrhy ohľadom práce s grafikou, prípadne s niečím iným, ten správny e-mail kde ma môžete kontaktovať je hrdlica@gmail.com. V ďalšom čísle sa už opäť budeme zaoberať inou problematikou. Zatiaľ Vám prajem veľa úspechov a bezchybného kódu.

 

S pozdravom,

Peter Hrdlica



 

 

Novinky a inšpirácie

Z nášho blogu

Prečítajte si novinky, inšpirácie a dôležité informácie zo sveta webhostingu a technológií.

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami Oznamy
21. 10. 2026

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami

Vývojársky tím PHP vydal dôležité bezpečnostné záplaty pre všetky oficiálne podporované verzie PHP 8. Na našich serveroch sme nezaváhali ...

Čítať viac
Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás? Oznamy
01. 10. 2026

Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás?

Google oznámil, že v januári 2027 zruší v Gmaile funkciu „Odoslať ako“ (Send as) pre e-mailové adresy od iných poskytovateľov. Ak ste si ...

Čítať viac
Večerná „prestávka“ pre server VIP033 Oznamy
25. 09. 2026

Večerná „prestávka“ pre server VIP033

Neustále pracujeme na tom, aby vaše weby bežali hladko, rýchlo a bezpečne. Technológie idú míľovými krokmi vpred a my v Inet.sk s nimi dr...

Čítať viac
Novinky na Inet.sk (09 / 2026) Novinky
09. 09. 2026

Novinky na Inet.sk (09 / 2026)

Posledné mesiace sme v Inet.sk nevenovali len stabilite serverov, ale najmä počúvaniu vašich reálnych skúseností z každodennej praxe. Výs...

Čítať viac

Podpora klientom

Máte ďalšie otázky?

Nezúfajte, pripravili sme pre Vás jednoduché odpovede na najdôležitejšie otázky, ktoré od našich klientov dostávame.

Zistiť viac

Naše výhody

Prečo si nás vybrať?

Našim klientom ponúkame až 30-dňovú záruku vrátenia peňazí.

Sme skutočný slovenský webhosting

Slovenská
firma

Nepatríme pod žiadnu nadnárodnú spoločnosť, sme malá rodinná firma.

Na nás sa môžete kedykoľvek spoľahnúť

Dlhoročné
skúsenosti

Na slovenskom trhu pôsobíme už viac ako 20 rokov, sme overená značka.

Naši prví zákazníci sú stále s nami

Spokojní
zákazníci

Naši zákazníci sú ako naša rodina, preto nám verí už viac ako 1250 klientov.

Maximálna bezpečnosť

Maximálna
bezpečnosť

Chránime Vás pred útokmi i SPAMom. U nás sú Vaše dáta v bezpečí.

Prozákaznícka podpora

Ochotná
podpora

Zakladáme si na individuálnom prístupe, preto Vám vždy radi pomôžeme.

Kvalita a dobrá cena

Férová
cena

Cena pri obnove je rovnaká ako pri objednávke. Nezdražujeme po prvom roku a bez skrytých poplatkov.

U nás sa Vám nič nestratí

Pravidelné
zálohovanie

Vaše dáta zálohujeme každý deň, dostupné sú aj zálohy z pred niekoľkých mesiacov.

Svižný Admin Panel nájdete len u nás

Prehľadný
Admin Panel

Máme rýchly a prehľadný Admin Panel, ktorý zvládne používať naozaj každý.

Správa používateľov

Správa
používateľov

Spravujte svoje projekty bez akýchkoľvek obáv s kolegami alebo externými partnermi.

Máme zľavy pre verných klientov

Vernostné
zľavy

Verní klienti u nás automaticky získavajú 15 % zľavu na každú ďalšiu objednávku.

My Vás nebudeme obmedzovať

Bez
obmedzení

Neobmedzujeme počet databáz, e-mailov, ftp a ani prenos dát.

Hosting pre WordPress

WordPress
na 1 klik

Nainštalujte si obľúbené redakčné systémy rýchlo a jednoducho.

Referencie

Spokojní zákazníci

Pozrite sa, čo o nás povedali naši klienti. Neváhajte a pridajte sa k nám ešte dnes.

Auto 100
Bystricoviny
eCall Slovakia
Filip Jančík
Frost
Merkury Broker
Mi:Su Design
Mesto Nitra
Pro Clienta
Schneider Lekáreň
Vego Marketing
Mesto Zlaté Moravce

Všetky ceny sú uvádzané bez DPH
© 2006 - 2026, Inet.sk, s. r. o., Všetky práva vyhradené

Na našej stránke používame "cookies". Vďaka nim sledujeme návštevnosť, prispôsobujeme reklamu a používateľské nastavenia, čo zlepšuje Váš zážitok z našej stránky. Súhlasíte s ich spracovaním?
Vlastné nastavenia cookies