5. diel - Small Basic - Grafická okna
Minule sme si popísali triedy TextWindow, Network a Math. Dnes sa posunieme v seriáli ďalej a začneme tvoriť oveľa zaujímavejšie aplikácie. Uvedieme si totiž prácu s grafickými oknami.
Úvod do grafických okien
Tak teda začneme. S grafickými oknami sa dá vo Small Basicu dosť slušne hrať a toto vás bude aj baviť . Vždy je dobré si nastaviť farbu pozadia, to urobíte takto:
GraphicsWindow.BackgroundColor = "Black"
A vaše okno by malo vyzerať takto:
Máte teda prvý grafické okno! Možno by to chcelo vypísať potrebné text. To nie je žiadny problém, ale je potrebné, aby sme nastavili farbu na bielu, defaultná farba je bledo modrá.
GraphicsWindow.BrushColor = "White" GraphicsWindow.DrawText(0, 0, "Ahoj!")
Na prvom riadku sa zmení farba štetca na bielu, tzn. text a výplne tvarov a na druhom je výpis textu na 0, 0. To sú súradnice xay (ľavý horný roh okna). Asi vás zaujíma, ako zmeniť farbu obrysu u tvarov. Môžeme si to vyskúšať na elipse, stačí do kódu pridať:
GraphicsWindow.PenColor = "White" GraphicsWindow.DrawEllipse(32, 32, 128, 128)
A aj s tým textom by to malo vyzerať nejako takto:
Funguje a je to pekné, nie?
Ale asi sa vám nepáči nadpis okna. To možno zmeniť jednoducho ako všetko ostatné:
GraphicsWindow.Title = "Nadpis"
Tak máme nadpis. Teraz ešte nastavenia šírky a výšky okna:
GraphicsWindow.Width = 800 GraphicsWindow.Height = 600
To nastaví šírku a výšku na 800x600. To je základná práca s oknami as tými tvary sa dá slušne hrať. Teraz si naprogramujeme vlastné loading bar
Loading bar
Defaultný farba pozadia je biela, tak tu necháme. Štetec (výplň) nastavíme na tmavo modrú a obrys na čiernu. Veľkosť okna na 240x32, aký si dáte nadpis okna nechám na vás. Kód by mohol vyzerať takto:
GraphicsWindow.Title = "Můj Loading Bar" GraphicsWindow.Width = 240 GraphicsWindow.Height = 32 GraphicsWindow.PenColor = "Black" GraphicsWindow.BrushColor = "DarkBlue"
Teraz k samotnému postupnému vykresľovanie musíme vytvoriť cyklus od jednej do 120. Bude sa vykresľovať obrys obdĺžnika na súradniciach 0, 0. Vaše premenná v cykle * 2, 32, a plný obdĺžnik na rovnakých súradniciach. Teraz už chápete, prečo je okno 240x32, čo ? Ešte musíme vždy spomaliť kroky cyklu, aby sa obdĺžnik nevykreslil hneď. Môžete nastaviť napríklad na 30 milisekúnd, to by cyklus prebehol za 3600 milisekúnd. Tak, kód by mohol vyzerať takto:
For a = 1 To 120 GraphicsWindow.DrawRectangle(0, 0, a * 2, 32) GraphicsWindow.FillRectangle(0, 0, a * 2, 32) Program.Delay(30) EndFor
obrázok:
Pekné, nie? A ešte si to môžeme trochu vylepšiť, zašpiníte kód na nastavenie výplne na tmavo modrú. Dáme do cyklu nastavenia farby výplne na náhodne zvolenú, stačí len pridať:
GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
Vidíte ďalšie operácie z triedy GraphicsWindow, pri každom kroku zvolíme náhodnú farbu výplne.
Obdĺžniky
Skúsme si ďalší príklad. Úplne jednoduchý kód, vykreslí štvorcové, farebné pozadie na okno 600x400px.
GraphicsWindow.Width = 600 GraphicsWindow.Height = 400 For y = 0 To GraphicsWindow.Height / 20 For x = 0 To GraphicsWindow.Width / 20 GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor() GraphicsWindow.FillRectangle(x * 20, y * 20, 20, 20) EndFor EndFor
výsledok:
Reakcie na klávesy
Nakoniec si ukážme, ako možno reagovať na stlačenie nejaké klávesy. Malú ochutnávku sme mali už v predchádzajúcich dieloch. Kód nižšie zaregistruje procedúru key_down na udalosť okná KeyDown, ktorá sa zavolá vo chvíli, keď používateľ stlačí kláves. Podmienkou zareagujeme na to, ktorá klávesa bola stlačení. Ak to bolo Escape, ukončíme program.
GraphicsWindow.KeyDown = key_down Sub key_down last_key_down = GraphicsWindow.LastKey If last_key_down = "Escape" Then 'ESC Program.End() EndIf EndSub