Přidávání animací do programů Posouvání objektů se dá zařídit, pomocí prvků, které jsou vypsány v následující tabulce: Klíčové slovo Popis Left Tato vlastnost se dá využít k vodorovnému posunu objektu (doleva nebo doprava) Top Tato vlastnost se dá využít ke svislému posunu objektu (nahoru nebo dolů) Location Tato vlastnost se dá využít k posunu objektu na stanovené místo SetBounds Metoda, která nastavuje hranice objektu, jeho umístění a velikost Použití vlastností Left a Top Objekt.Left = HodnotaSouradniceX Objekt.Top = HodnotaSouradinceY Např. PictureBox1.Left = 300 strany okna PictureBox1.Left = PictureBox1.Left + 50 PictureBox1.Top = 150 titulkový pruh PictureBox1.Top = PictureBox1.Top + 30
Přesunutí objektu na pozici 300 pixelů vpravo od levé Přesunutí objektu o 50 pixelů doprava Přesunutí objektu na pozici 150 pixelů dolů pod Přesunutí objektu o 30 pixelů dolů
Použití vlastnosti Location Pokud chci přesunů použít více, byl by kód programu při používání vlastností Left a Top nepřehledný. Místo toho je vhodné použít vlastnost Location Objekt.Location = New Point(HodnotaSouradniceX, HodnotaSouradniceY) Např. PictureBox1.Location = New Point (300,200) Přesune objekt na souřadnice 300,200 Relativní posun PictureBox1.Location = New Point (PictureBox1.Location.X-50, PictureBox1.Location.Y-40) Přesune objekt o 50 pixelů doleva a o 40 nahoru. Změna velikosti objektu Pokud chci měnit velikost objektu, měním vlastnosti Height a Width objektu.
AUTA V tomto příkladě se naučíme pracovat s obrázky a ukážeme si jak se ve Visual Basicu dělají jednoduché animace. Konkrétně si pohrajeme s autíčky, které nám budou po našem formuláři jezdit, couvat, měnit barvu, zastavovat a zrychlovat tak, jak si budeme sami přát.
Auto mění barvu Po stisku tlačítka auto změní barvu.
cbBarva CommandButton
pbAuto PictureBox
Vkládání obrázků prvkem PictureBox Vložte objekt PictureBox. Do jeho vlastnosti Image postupně vložte cervene i modre auto tak, aby se oba obrázky dostali do Resources projektu.PictureBox nazvěte pbAuto, nastavte mu vlastnost SizeMode na StretchImage a vlastnost Image na Automodre. Nastavte barvu pozadí formuláře na bílou BackColor na White, vlastnost Text na Auta. Přidejte prvek CommandButton s nápisem Změň barvu a pojmenujte jej cbBarva Tvorba programu Autíčko bude měnit barvu tak, že střídavě budeme v prvku pbAuto zobrazovat červené a modré auto. V událostní proceduře Form_Load nastavíme do prvku pbAuto nejprve obrázek modrého auta. Pro větší přehlednost programu si také vytvoříme globální proměnnou barva ve které si budeme pamatovat jakou má zrovna auto barvu a definuji si dvě konstanty Modra a Cervena. Const Modra = 1 Const Cervena = 2 Dim Barva As Integer Private Sub Form_Load()
pbAuto.Image = My.Resources.AUTOMOD Barva = Modra
End Sub
Po stisku tlačítka Změň barvu autíčko změní svoji barvu. Když bylo modré bude červené, když bylo červené bude modré. Private Sub cbBarva_Click() If Barva = Modra Then pbAuto.Image = My.Resources.AUTOCRV Barva = Cervena Else pbAuto.Image = My.Resources.AUTOMOD Barva = Modra End If End Sub
Auto jede Pokusíme se o jednoduchou animaci – budeme chtít aby auto jelo. Co to znamená? Budeme s objektem posunovat. Vytvoříme si nové tlačítko Jeď a po stisku tohoto tlačítka se auto posune o předem definovanou konstantu Krok. Posun budeme realizovat tak, že změníme vlastnost Left objektu pbAuto. Private Sub cbJed_Click()
pbAuto.Left = pbAuto.Left + Krok End Sub
Ano, auto se posunuje požadovaným směrem, ale jen díky tomu, že opakovaně klepeme na tlačítko. Pokud bychom chtěli simulovat reálný pohyb autíčka, měla by se tato procedura vyvolávat automaticky v pravidelných časových intervalech. K realizaci tohoto pohybu nám pomůže Timer. Přidejte do formuláře prvek Timer . Příkazy, které se prováděli po stisku tlačítka Jeď přesuňte do událostní procedury Timer1_Tick. Timeru nastavte vlastnost Interval na 200. Autíčko se teď již pohybuje samo, ale co kdybychom chtěli ke startu autíčka využít již připravené tlačítko? Každý prvek nejenom prvek Timer je možné aktivovat a deaktivovat pomocí vlastnosti Enabled. Pokud je vlastnost Enabled nastavena na hodnotu False, prvek není aktivní. Hodnota True naopak znamená, že prvek je aktivní. Této vlastnosti využijeme při startu autíčka. Private Sub cbJed_Click() Timer1.Enabled = True End Sub
Po stisku tlačítka Jeď se auto rozjede. Přidejte teď samostatně tlačítko Stop, Stop po jeho stisku se autíčko zastaví.
Autíčko couvá
Po stisku tlačítka Couvej změní auto směr. Tlačítka, která nemají při akci smysl by měly být deaktivovány. (Například při pohybu autíčka nemá smysl mačkat tlačítko Jeď...). Zastavení autíčka o hranu formuláře Při pohybu autíčka otestujeme, zda jeho pravý okraj již není na hraně formuláře. Pokud autíčko bude na hraně, zastavíme ho (ukončíme činnost prvku Timer). Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick pbAuto.Left = pbAuto.Left + Krok 'test, zda se auticko nachazi na pravem kraji formulare If pbAuto.Left + pbAuto.Width >= Me.Size.Width Then Timer1.Enabled = False End If 'test, zda se auticko nachazi na levém kraji formulare If pbAuto.Left <= 0 Then Timer1.Enabled = False End If
End Sub
Změna rychlosti auta
lbRychlost - Label
Pokud chceme měnit rychlost auta stačí změnit hodnotu vlastnosti Interval. Čím větší hodnota Interval tím je auto pomalejší. Pokud bychom chtěli zadávat bezpečně celočíselné hodnoty je vhodné k jejich zadání využít speciální prvek HScrollBar. U tohoto prvku se nastavují tyto vlastnosti.: Název prvku Vlastnost Hodnota HScroll1 HScrollBar
Min Max Value
10 240 40
Bývá zvykem tento prvek spojovat s prvkem Label, ve kterém je aktuální hodnota (vlastnost Value) zobrazována číselně. Private Sub HScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll 'zobrazeni aktualni rychlosti lbRychlost.Text = HScrollBar1.Value 'zmena intervalu Timeru podle rychlosti 'pozor neprima umera, cim vetsi rychlost tim mensi Interval Timer1.Interval = HScrollBar1.Maximum - HScrollBar1.Value End Sub