Archív Inet.sk Pôvodný autor: Peter Hrdlica
19. 09. 2006 o 14:11 9808x

Programujeme vo Visual Basicu IV.

V dnešnom dieli si ukážeme prácu s grafickými prvkami vo VB. Zoznámime sa s ovládacími prvkami PictureBox, Image a s prvkami VScrollBar a HScrollBar a vytvoríme si prvú malú aplikáciu.
Programujeme vo Visual Basicu IV.
Ovládací prvok – Image

Image je grafický prvok, ktorý sa používa na načítanie obrázkov buď za behu aplikácie, alebo pri jej návrhu. Image slúži hlavne na dekoráciu aplikácie a i keď je to grafický prvok, nie je do neho možné kresliť, na to slúži prvok PictureBox (vysvetlíme si ho v nasledujúcej kapitole). Vytvorte si na formulár jeden prvok Image. Ihneď je viditeľné, že tento prvok nemá vlastné pozadie (farbu na pozadí, je teda transparentný - priesvitný). Pri vlastnosti Picture nájdete “...“, kliknite na ne a vyberte si akýkoľvek obrázok na Vašom disku. Ako iste vidíte, po načítaní obrázka sa prvok Image nastaví na potrebnú veľkosť, aby sa do neho vošiel celý obrázok. Ak teraz začnete prvku Image rôzne meniť veľkosť, tak sa obrázok buď zreže, alebo zostane vedľa obrázku voľné miesto (v rámci prvku Image). Nájdite preto teraz vo vlastnostiach položku Stretch (angl. roztiahnuť) a nastavte ju na hodnotu True. Od teraz sa bude veľkosť obrázku meniť s veľkosťou prvku Image. Jednoduchý príklad použitia prvku ako dekorácie aplikácie je Splash Screen. Splash Screen je okno, ktoré sa zobrazí pri spúšťaní niektorých aplikácií a po dobu kým je toto okno viditeľné sa načítajú rôzne potrebné súčasti programu(napr. aj VB má pri spúšťaní vlastný Splash Screen).

Nakreslite si na formulár prvok Image a do handleru Form_Load() – dvojité poklepanie na formulár, napíšte Image1.Picture = LoadPicture (cesta). Slovo cesta môžeme nahradiť reťazcom cieľovej cesty dvomi spôsobmi. Môžeme si zadeklarovať premennú cesta a do nej najskôr cestu načítať : cesta = “C:Documents And SettingsPicturessample.jpg”, alebo slovo cesta nahradiť : LoadPicture (“C:Documents And SettingsPicturessample.jpg”). Handler teda aj s deklaráciou premennej môže vyzerať takto:

Dim cesta As String

Private Sub Form_Load()
cesta = "C:Documents and SettingPicturessample.jpg"
Image1.Picture = LoadPicture(cesta)
End Sub


Ovládacie prvky – VscrollBar a HScrollBar

Scrollbar slúži na posúvanie obrazovky (známi z Internet Exploreru, Microsoft Wordu, atd). HScrollbar je horizontálny a Vscrollbar je vertikálny. Použitie prvkov ScrollBar si ukážeme hneď na jednoduchom príklade. Nakreslime teda na formulár jeden ľubovoľný ScrollBar a jeden prvok Label. V panely vlastností vyhľadajte položku Max, tá udáva maximálnu hodnotu, ktorú môže prvok dosiahnuť. Rovnako Min určuje minimálnu hodnotu prvku ScrollBar(Min má najväčšie využite napr. pri textových editoroch, aby ste text nepísali na okraj papiera). Implicitne nastavená hodnota položky Max je 32767, čo je zároveň vrchná hranica premennej Integer. Nastavme max napr. na hodnotu 100. ďalšou vlastnosťou bez ktorej sa nezaobídete je vlastnosť Value (angl. hodnota). Tá nám udáva aktuálnu hodnotu prvku ScrollBar.

Ak Value budete pokúšať meniť za behu programu na hodnotu vyššiu ako je Max, tak to bude viesť k zrúteniu aplikácie.
Handler bude vyzerať takto:

Private Sub HScroll1_Change()
Label1.Caption = HScroll1.Value
End Sub

Slovami povedané: vlastnosti Caption prvku Label priradíme hodnotu Value prvku HScrollBar.



Do prvku Label sa vypíše hodnota prvku HcrollBar.


Ovládací prvok – Picture Box

PictureBox je takisto grafický ovládací prvok, do ktorého sa dajú načítať obrázky podobne ako do prvku Image, ale častejšie sa využíva na kreslenie. Prvou viditeľnou zmenou po nakreslení PictureBoxu na formulár bude jeho vlastné pozadie, ktoré je implicitne nastavené na šedé. Toto možno zmeniť aj v paneli nástrojov vlastnosťou BackColor, alebo i za behu programu napr. Picture1.BackColor ="&H00FFFFFF&". &H00FFFFFF& je vo VB kód pre bielu farbu. Po načítaní obrázku do PictureBoxu sa jeho tvar podľa obrázku podobne ako pri prvku Image nezmení a zároveň nemá vlastnosť Stretch.


Prvá malá aplikácia –Miešanie farieb

Pozorný čitateľ, ktorý dospel až do tohto bodu by mal byť schopný túto aplikáciu bez problémov naprogramovať. Bude sa jednať o malý program, ktorý bude miešať farby. Miešanie bude prebiehať v palete RGB (angl. red, green, blue) – budú sa miešať jednotlivé zložky farieb a to červená, zelená a modrá. Navrhnite si teda formulár zhruba takto:



Rozbor:
  1. Maximálnu hodnotu prvku HScrollBar nastavíme na 255. Kombinácia troch farieb nám potom dá hodnotu 16581375

  2. Napravo od každého z prvkov Label s popisom o ktorú farbu sa jedná sa nachádza ďalší prvok Label, ktorý má momentálne vlastnosť Caption = “”. Neskôr budú tieto popisy ukazovať hodnoty daných farieb. Sú pomenované lblred, lblgreen a lblblue.
Handlery pre každý HScrollBar sú takmer rovnaké. Jediný rozdiel je ten, že každý HScrollBar mení hodnotu iného z prvkov lblred, lblgreen a lblblue. Handlery budú vyzerať nasledovne:

Private Sub HScroll1_Change()
Picture1.BackColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value)
lblred.Caption = HScroll1.Value
End Sub

Private Sub HScroll2_Change()
Picture1.BackColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value)
lblgreen.Caption = HScroll2.Value
End Sub

Private Sub HScroll3_Change()
Picture1.BackColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value)
lblblue.Caption = HScroll3.Value
End Sub

Ako je vidieť, stále meníme farbu pozadia prvku Picture1 a to zabezpečuje funkcia

RGB. Všeobecný zápis funkcie je takýto : RGB ( červená, zelená, modrá), HScrollBar1.Value môžeme nahradiť premennými, alebo priamo číslami, avšak nahradenie číslom je jednorázové a nezmeniteľné užívateľom. Preto sa používajú častejšie práve premenné, lebo tie sú variabilné – meniteľné a môže ich meniť aj užívateľ programu.



Podoba programu na miešanie farieb za behu.


Kreslenie v prvku PictureBox

Najprv sa naučíme nakresliť jeden bod pri kliknutí myšou v prvku PictureBox. Na formulári nám bude postačovať jeden prvok PictureBox, ktorému priradíme biele pozadie. Otvoríme si klasicky handler pre tento prvok dvojitým poklepaním na neho avšak teraz budeme na prvok kresliť nie pri udalosti Click, ale pri udalosti MouseDown, to znemená, že bod sa nakreslí, keď sa stlačí tlačidlo myši (prečo sa použije handler pre udalosť MouseDown a nie Click je zrejmé z postupu pre kreslenie pri pohybe myši).



Zmena handleru (udalosti) pre ovládací prvok.

Príkaz na kreslenie bodu je jednoduchý: If Button = 1 Then Picture1.PSet (X, Y), RGB(0, 0, 0) a stačí ho len vložiť do spomínaného handlera. Príkaz môže povedať slovami asi takto: „Ak je stlačené ľavé tlačidlo myši (číslo 1 je pre ľavé, 2 pre pravé a 3 pre obe naraz), potom nakresli na PictureBox bod so súradnicami X,Y – X,Y sú súradnice aktuálnej pozície myši, a čiernou farbou. Použil som paletu RGB, keďže sme sa s ňou už zaoberali.

Ak chceme aby program kreslil body aj pri pohybe myši po “plátne“, musíme zapísať tento istý príkaz do handleru MouseMove. Ďalšou dôležitou vecou je nakresliť bod takisto pri pustení tlačidla myši, v opačnom prípade by sa posledný bod nenakreslil, lebo pri pustení tlačidla sa rozoznáva udalosť MouseUp a nie MouseMove. Rovnako ak by sme neuviedli kreslenie bodu pri udalosti MouseDown, bol by vynechaný prvý bod. Celý výsledný kód bude teda vyzerať nasledovne:

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then Picture1.PSet (X, Y), RGB(0, 0, 0)
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then Picture1.PSet (X, Y), RGB(0, 0, 0)
End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then Picture1.PSet (X, Y), RGB(0, 0, 0)
End Sub

Keď však začnete kresliť, zbadáte, že ak rýchlejšie pohnete myšou, tak sa čiara pretrhne a bude prerušovaná. Každá bodka znamená rozoznanie udalosti MouseMove, z toho je zrejmé, že VB pri rýchlejšom pohybe nestíha túto udalosť rozoznať, preto sa kreslená čiara preruší.

Zmenu veľkosti kresleného bodu vykonáme zmenou vlastnosti DrawWidth prvku PictureBox. Ako príklad si na formulár nakreslime textové pole, do ktorého budeme zadávať požadovanú veľkosť bodu. Celý handler bude vyzerať nasledovne:

Private Sub Text1_Change()
If Text1.Text = "" Then Text1.Text = "1"
Picture1.DrawWidth = Text1.Text
End Sub

Podmienený príkaz If nachádzajúci sa v handlery zabezpečí, že sa aplikácia nezrúti pri vymazávaní textového poľa. Slovami povedané: „Ak sa stane, že textové pole zostane prázdne, vlož do neho 1!“ Ešte je však stále možnosť, že sa aplikácia zrúti a to pri zadaní písmena do textového poľa, avšak tým sa teraz zaoberať nebudeme.


Úlohy
  1. Upravíme program na kreslenie tak, aby sa veľkosť bodu menila pomocou jedného z prvkov ScrollBar

  2. Upravíme program na kreslenie tak, aby sa dala meniť farba kresleného bodu za pomoci premennej, ktorá bude farbu reprezentovať (typu String) a za pomoci prvkov Label, alebo PictureBox s farebnými pozadiami. Uvediem príklad: farba =Label1.BackColor a priradenie farby: Picture1.PSet (X,Y) , farba.

  3. Upravíme program na kreslenie podobne ako v príklade 2 avšak užívateľ si bude môcť namiešať farbu palety RGB sám.

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