Akademia Techniczno-Rolnicza w Bydgoszczy
Wydział Mechaniczny
Katedra Sterowania i Konstrukcji
Systemy mikrokomputerowe
WSTĘP DO PROGRAMOWANIA
W JĘZYKU VISUAL BASIC
Instrukcja nr 9
Opis działania programu Motyl
Program Motyl pokazuje wykorzystanie obiektów obraz - Image do zbudowania aplikacji wyświetlającej animacje rysunków w formatach BMP, WMF oraz ICO.
Implementacja wizualna programu Motyl
1. Otwórz nowy projekt, zachowaj jego formę w pliku Motyl.frm, a projekt pod nazwą Motyl.mak.
2. Na podstawie danych z tabeli zbuduj formę tak jak na rysunku 1.
Obiekt
Własność
Ustawienie
Form
Name
Caption
Height
Left
ScaleMode
Top
Width
frmMotyl
Motyl
4425
930
3-Pixel
1080
7485
Image
Picture
Stretch
imgObraz
77
24
(znaleźć bfly1.bmp)
False
176
Visible
imgMotyl1
16
imgMotyl2
128
(znaleźć bfly2.bmp)
Timer
Interval
tmeZegar
220
8
14
Command Button
cmdKoniec
&Koniec
33
400
224
73
Rys.1 Program Motyl
Instrukcja
Własność ScaleMode obiektu Form określa w jakich jednostkach podawane są rozmiary i położenie obiektów umieszczonych w formie frmMotyl. Ustawienie 3-Pixel wskazuje, że wartości podawane w takich cechach ja Left, Top, Width, Height wyrażono w punktach (pikselach) obrazu.
Obiekt Timer pozwala na automatyczne uruchamianie wskazane procedury (w tym przykładzie tmeZegar_Timer()) co określony czas. Czas jaki mija pomiędzy kolejnymi uruchomieniami określa w milisekundach własność Interval. Obiekt typu Timer podczas działania programu nie jest wyświetlany, tak więc własności Left oraz Top określają położenie ikonki symbolizującej obiekt Timer w trakcie budowania formularza.
Własność Visible obiektów imgMotyl1 i imgMotyl2 ustawiona na False wskazuje, że nie są one widoczne podczas działania programu (wykorzystano je do przechowywania kolejnych klatek animacji).
Wprowadzanie kodu programu Motyl
1. Do procedury tmeZegar_Timer() formy frmMotyl wpisz następujący kod:
Sub tmeZegar_Timer()
Static WskazObraz As Integer
imgObraz.Move imgObraz.Left + 20 imgObraz.Top - 5
If WskazObraz = True Then
imgObraz.Picture = imgMotyl1.Picture
Else
imgObraz.Picture = imgMotyl2.Picture
End If
WskazObraz = Not WskazObraz
End Sub
Procedura ta wykonywana jest automatycznie przez obiekt tmeZegar co 220 milisekund (określa to własność Interval tego obiektu). Działanie procedury polega na przesuwaniu obiektu imgObraz wyświetlającego wizerunek motyla po każdym wywołaniu o 20 pikseli w prawo i 5 pikseli do góry. Jednocześnie następuje cykliczna zmiana wyświetlanego obrazu motyla - raz jest to obrazek motyla ze złożonymi skrzydłami, a następnie ze skrzydłami rozłożonymi.
W pierwszej kolejności definiowana jest zmienna WskazObraz określająca, który obraz motyla ma być wyświetlony. Jeśli jej wartość wynosi True wyświetlany jest motyl z otwartymi skrzydłami, w przeciwnym wypadku ze złożonymi. Deklaracja Static określa, że wartość zmiennej nie jest kasowana po zakończeniu się procedury.
Po tej deklaracji obiekt imgObraz jest przesuwany przy pomocy metody Move z argumentami określającymi punkt docelowy przesunięcia (górny lewy wierzchołek ma zostać przesunięty ze swego aktualnego położenia w prawo o 20 punktów - imgObraz.Left + 20 i do góry o 5 punktów - imgObraz.Top - 5).
Następnie sprawdzany jest wspomniany wyżej warunek określany przez zmienną WskazObraz, a następnie własności Picture obiektu imgObraz przypisywana jest zawartość własności Picture ukrytych obiektów imgMotyl1 i imgMotyl2. Wykorzystanie trzech obiektów umożliwia przechowywanie dwóch różnych obrazów motyla jednocześnie w pamięci (imgMotyl1 i imgMotyl2) oraz przesuwanie tylko pojedynczego obiektu (imgObraz), któremu na zmianę przypisywane są obrazki pamiętane przez dwa pozostałe obiekty. Umożliwia to programowanie szybkich animacji przy pomocy stosunkowo prostych procedur.
Na koniec wykonywana jest zamiana wartości na przeciwną zmiennej WskazObraz przy pomocy operatora Not (z True na False lub z False na True). Dzięki deklaracji Static wartość zmiennej jest pamiętana nawet po zakończeniu działania procedury (deklaracja Dim pozwala deklarować zmienne, których wartości pamiętane są podczas wywołania procedury, po jej zakończeniu ulegają one usunięci z pamięci komputera)
2. Do procedury Form_Load() formy frmMotyl wpisz następujący kod:
Sub Form_Load()
cmdKoniec.Move 10,10
Procedura ta przesuwa (licząc od lewego górnego wierzchołka) obiekt cmdKoniec (klawisz Koniec) do punktu o współrzędnych 10,10 przy czym początek układu współrzędnych znajduje się w górnym lewym wierzchołku wewnętrznej (o kolorze białym) części formy frmMotyl.
3. Do procedury cmdKoniec_Click() formy frmMotyl wpisz następujący kod:
Sub cmdKoniec_Click()
End
Uruchomienie programu Obrazki
1. Uruchom program Motyl.
2. Zwróć uwagę na sposób animacji motyla.
3. Kliknij Koniec, aby zakończyć działanie programu.
Tworzenie pliku wykonywalnego (Motyl.exe)
1. Wybierz z menu File opcję Make EXE File.
2. Zapamiętaj plik pod nazwą Motyl.exe w katalogu .
3. Zakończ działanie Visual Basic wybierając z menu File opcję Exit.
Ćwiczenie końcowe
1. Zmień program Motyl, tak aby zmienić tor lotu motyla (w dowolny sposób).
2. Zmodyfikuj program Motyl, tak aby wyświetlał on przesuwający się poziomo księżyc w kolejnych kwadrach. Obrazki przedstawiające kolejne kwadry księżyca znajdują się w plikach Moon01.ico, Moon02.ico, Moon03.ico, Moon04.ico, Moon05.ico, Moon06.ico, Moon07.ico oraz Moon08.ico (katalog: \vb\icons\elements)
kkkate