Lekce 5 - Small Basic - Grafická okna
Minule jsme si popsali třídy TextWindow, Network a Math. Dnes se posuneme v seriálu dále a začneme tvořit mnohem zajímavější aplikace. Uvedeme si totiž práci s grafickými okny.
Úvod do grafických oken
Tak tedy začneme. S grafickými okny se dá ve Small Basicu dost slušně
hrát a toto vás bude i bavit . Vždy je dobré si nastavit barvu pozadí, to uděláte takto:
GraphicsWindow.BackgroundColor = "Black"
A vaše okno by mělo vypadat takto:

Máte tedy první grafické okno! Možná by to chtělo vypsat třeba text. To není žádný
problém, ale je třeba, abychom nastavili barvu na bílou, defaultní barva je
bledě modrá.
GraphicsWindow.BrushColor = "White"
GraphicsWindow.DrawText(0, 0, "Ahoj!")
Na prvním řádku se změní barva štětce na bílou, tzn. text a výplně tvarů a na druhém je výpis textu na 0, 0. To jsou souřadnice x a y (levý horní roh okna). Asi vás zajímá, jak změnit barvu obrysu u tvarů. Můžeme si to vyzkoušet na elipse, stačí do kódu přidat:
GraphicsWindow.PenColor = "White"
GraphicsWindow.DrawEllipse(32, 32, 128, 128)
A i s tím textem by to mělo vypadat nějak takhle:

Funguje a je to pěkné, ne?
Ale asi se vám nelíbí nadpis okna. To lze změnit jednoduše jako vše ostatní:
GraphicsWindow.Title = "Nadpis"
Tak máme nadpis. Nyní ještě nastavení šířky a výšky okna:
GraphicsWindow.Width = 800
GraphicsWindow.Height = 600
To nastaví šířku a výšku na 800x600. To je základní práce s okny a s
těmi tvary se dá slušně hrát. Teď si naprogramujeme vlastní loading bar
Loading bar
Defaultní barva pozadí je bílá, tak tu necháme. Štětec (výplň) nastavíme na tmavě modrou a obrys na černou. Velikost okna na 240x32, jaký si dáte nadpis okna nechám na vás. Kód by mohl vypadat takto:
GraphicsWindow.Title = "Můj Loading Bar"
GraphicsWindow.Width = 240
GraphicsWindow.Height = 32
GraphicsWindow.PenColor = "Black"
GraphicsWindow.BrushColor = "DarkBlue"
Teď k samotnému postupnému vykreslování musíme vytvořit cyklus od
jedné do 120. Bude se vykreslovat obrys obdélníku na souřadnicích 0, 0.
Vaše proměnná v cyklu * 2, 32, a plný obdélník na stejných
souřadnicích. Teď už chápete, proč je okno 240x32, co ? Ještě musíme vždy zpomalit
kroky cyklu, aby se obdélník nevykreslil hned. Můžete nastavit třeba na 30
milisekund, to by cyklus proběhl za 3600 milisekund. Tak, kód by mohl vypadat
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ázek:

Pěkné, ne? A ještě si
to můžeme trochu vylepšit, umažte kód na nastavení vyplně na tmavě
modrou. Dáme do cyklu nastavení barvy výplně na náhodně zvolenou, stačí
jen přidat:
GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
Vidíte další operace ze třídy GraphicsWindow, při každém kroku zvolíme náhodnou barvu výplně.
Obdélníky
Zkusme si další příklad. Zcela jednoduchý kód, vykreslí čtvercové, barevné pozadí 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ýsledek:

Reakce na klávesy
Nakonec si ukažme, jak lze reagovat na stisk nějaké klávesy. Malou ochutnávku jsme měli již v předchozích dílech. Kód níže zaregistruje proceduru key_down na událost okna KeyDown, která se zavolá ve chvíli, kdy uživatel stiskne nějakou klávesu. Podmínkou zareagujeme na to, která klávesa byla stiknuta. Pokud to bylo 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
Komentáře


Zobrazeno 10 zpráv z 20. Zobrazit vše