INSTR 10 DOC


Akademia Techniczno-Rolnicza w Bydgoszczy

Wydział Mechaniczny

Katedra Sterowania i Konstrukcji

Systemy mikrokomputerowe

WSTĘP DO PROGRAMOWANIA

W JĘZYKU VISUAL BASIC 5

Instrukcja nr 11

Opis działania programu Grafika

Program Grafika pokazuje wykorzystanie podstawowych funkcji graficznych języka Visual Basic.

Implementacja wizualna programu Grafika.

  1. Otwórz nowy projekt, zachowaj jego formę w pliku Grafika.frm, a projekt pod nazwą Grafika.mak .

  1. Na podstawie tabeli zbuduj formę tak jak na rysunku 1.

Obiekt

Własność

Ustawienie

Form

Name

Caption

Height

Left

Top

Width

frmGrafika

Grafika

5115

1155

2715

7590

Timer 0x01 graphic

Name

Interval

Left

Top

tmeZegar

1

6960

120

Command Button 0x01 graphic

Name

Caption

Height

Left

Top

Width

cmdStartStop

Start

390

240

120

1830

0x01 graphic

Rys.1 Program Grafika

W celu utworzenia menu opcje należy otworzyć okno Menu Design, poprzez wybór z menu Window opcji Menu Design.

0x01 graphic

Rys.2 Okno Menu Design

- jest to okienko tekstowe, do którego wprowadza się nazwę menu, podmenu lub komendy mającej pojawić się na pasku menu lub w samym menu. Wpisanie znaku „-” zamiast nazwy tworzy w menu separator. Uzyskanie dostępu poprzez klawiaturę do wprowadzanej pozycji menu możliwe jest po umieszczeniu znaku „&” przed jednym ze znaków nazwy. Po uruchomieniu znak poprzedzony ampersandem („&”) będzie podkreślony, a użytkownik będzie mógł dotrzeć do menu wciskając na klawiaturze lewy Alt i podkreślony znak.

- okienko tekstowe, do którego wprowadza się nazwę tworzonego obiektu (menu, podmenu lub komendy), Nazwa ta spełnia taką samą rolę jak nazwy innych obiektów Visual Basica.

- okienko tekstowe, do którego wprowadza się wartość numeryczną określającą pozycję obiektu menu w tabeli obiektów (bez związku z pozycją obiektu na ekranie).

- lista, z której można wybrać skrót klawiatórowy związany z daną pozycją menu.

- wybór tej opcji spowoduje, że menu będzie zawierało listę wszystkich otwartych form (okienek) projektowanej aplikacji.

- okienko tekstowe, do którego wprowadza się wartość numeryczną określającą indeks tematu pomocy związanego z daną pozycją menu.

- wybór tej opcji spowoduje, że po uruchomieniu wskazana pozycja menu będzie zaznaczona (znaczkiem „”, a wartość cechy Checked będzie ustawiona na True.

- zaznaczenie tej opcji powoduje, że wskazana pozycja menu będzie dostępna dla użytkownika po uruchomieniu aplikacji.

- zaznaczenie tej opcji spowoduje, że wybrana pozycja menu będzie widoczna po uruchomieniu programu.

- klawisze, które pozwalają ustalić, czy wprowadzona pozycja jest nazwą menu, stanowi jedną z jego komend lub jest nazwą podmenu. Można w ten sposób utworzyć do czterech „warstw” menu.

- umożliwiają zmianę pozycji wskazanej komendy menu niższą lub wyższą w obrębie pojedynczej „warstwy” menu.

- hierarchiczna lista obiektów wszystkich menu. Komendy menu i nazwy podmenu są odsunięte od marginesu, aby wyróżnić ich pozycję na poszczególnych „warstwach”.

- przesuwa wskazany obiekt do następnej linii.

- wprowadza nowy obiekt do menu przed obiekt wskazany.

- kasuje wskazany obiekt.

- kończy definiowanie menu, zapisując zmiany

- kończy definiowanie menu unieważniając zmiany

Numer menu

Własność

Ustawienie

1

Name

Caption

Menu nadrzędne (numer)

mnuOpcje

&Opcje

-

2

Name

Caption

Menu nadrzędne (numer)

mnuPunkt

&Punkty

1

3

Name

Caption

Menu nadrzędne (numer)

mnuLinia

&Linie

1

4

Name

Caption

Menu nadrzędne (numer)

mnuOkrag

Okrę&gi

1

5

Name

Caption

Menu nadrzędne (numer)

mnuSeparator1

-

1

6

Name

Caption

Menu nadrzędne (numer)

mnuKoniec

&Koniec

1

Wprowadzanie kodu programu Grafika

  1. Do procedury mnuPunkt_Click() formy frmGrafika wpisz następujący kod:

Sub mnuPunkt_Click()

mnuPunkt.Checked = True

mnuLinia.Checked = False

mnuOkrag.Checked = False

End Sub

Instrukcja

Procedura ta wykonywana jest po wybraniu z menu Opcje komendy Punkty. W wyniku jej działania cecha Checked oznaczająca fakt wybrania opcji Punkty (mnuPunkty) jest ustawiania na True (Prawda), zaś ta sama cecha w przypadku innych opcji menu jest ustawiana na False. Wizualnym efektem działania tej procedury jest pojawienie się w menu przy opcji Punkty znaczka „”.

  1. Do procedury mnuLinia_Click() formy frmGrafika wpisz następujący kod:

Sub mnuLinia_Click ()

mnuPunkt.Checked = False

mnuLinia.Checked = True

mnuOkrag.Checked = False

End Sub

Instrukcja

Procedura ta wykonuje podobne operacje co kod zamieszczony w punkcie 1 lecz odnosi się do wybrania z menu Opcje komendy Linie.

  1. Do procedury mnuOkrag_Click() formy frmGrafika wpisz następujący kod:

Sub mnuOkrag_Click ()

mnuPunkt.Checked = False

mnuLinia.Checked = False

mnuOkrag.Checked = True

End Sub

Instrukcja

Procedura ta wykonuje podobne operacje co kod zamieszczony w punkcie 1 lecz odnosi się do wybrania z menu Opcje komendy Okręgi.

  1. Do procedury mnuKoniec_Click() formy frmGrafika wpisz następujący kod:

Sub mnuKoniec_Click ()

End

End Sub

Instrukcja

Procedura ta wykonywana jest po wybraniu z menu Opcje komendy Koniec i powoduje zakończenie działania programu.

  1. Do procedury cmdStartStop_Click() formy frmGrafika wpisz następujący kod:

Sub cmdStartStop_Click ()

Select Case Wykonuj

Case True

cmdStartStop.Caption = "Start"

Wykonuj = False

mnuOpcje.Enabled = True

Cls

Case False

cmdStartStop.Caption = "Stop"

Wykonuj = True

mnuOpcje.Enabled = False

If mnuLinia.Checked = True Then

Randomize

DrawWidth = 2

ElseIf mnuPunkt.Checked = True Then

DrawWidth = 5

ElseIf mnuOkrag.Checked = True Then

DrawWidth = 1

DrawStyle = 1

DrawMode = 7

End If

End Select

End Sub

Instrukcja

Procedura cmdStartStop wywoływana jest po naciśnięciu klawisza Start. Pierwsza linia kodu rozpoczyna warunek wielokrotnego wyboru Select Case zależny od wartości zmiennej Wykonuj.

Select Case Wykonuj

Jeżeli zmienna Wykonuj przyjmie wartość True wykonywane są instrukcje pomiędzy Case True a Case False, w przeciwnym wypadku między Case False, a End Select.

Wartość zmiennej Wykonuj równa True oznacza, że przycisk Start został wcześniej wciśnięty, a w związku z tym demonstracja procedur graficznych jest w toku. Ponowne wciśnięcie klawisza Start ma na celu zatrzymanie prezentacji. Kolejno są wykonywane opisane poniżej operacje.

Napis na klawiszu cmdStartStop zostaje zmieniony na Start.

cmdStartStop.Caption = "Start"

Zmienna Wykonuj przyjmuje wartość False powodując tym samym zakończenie prezentacji.

Wykonuj = False

Menu Opcje zostaje udostępnione użytkownikowi poprzez ustawienie własności Enabled na True.

mnuOpcje.Enabled = True

W ostatniej operacji forma jest czyszczona z narysowanych na niej elementów przy pomocy instrukcji Cls.

Cls

Od linii Case False rozpoczyna się kod wykonywany gdy zmienna wykonuj jest równa False, czyli w przypadku, gdy klawisz Start jest wciskany w celu uruchomienia demonstracji procedur graficznych.

Napis na klawiszu cmdStartStop zostaje zmieniony na Stop

cmdStartStop.Caption = "Stop"

Zmienna Wykonuj przyjmuje wartość True powodując tym samym uruchomienie prezentacji.

Wykonuj = True

Następuje wyłączenie dostępu do menu Opcje poprzez ustawienie własności Enabled na False.

MnuOpcje.Enabled = False

Kolejne linie kodu przygotowują system do wykonania procedur graficznych. Ponieważ każda z procedur wymaga innego przygotowania wykonywane funkcje zostały uzależnione od wybranej komendy z menu Opcje.

Jeżeli wybrano komendę Linie (warunek: If mnuLinia.Checked = True Then) wykonywane są poniższe operacje.

Uruchomienie generatora liczb losowych.

Randomize

Grubość rysowanej linii ustawiana jest na 2 piksele.

DrawWidth = 2

Wybór komendy Punkty (warunek: ElseIf mnuPunkt.Checked = True Then) powoduje ustawienie wielkości rysowanych punktów na 5 pikseli.

DrawWidth = 5

Wybór komendy Okręgi (warunek: ElseIf mnuOkregi.Checked - True Then) powoduje ustawienie grubości krawędzi rysowanego okręgu na 1 piksel.

DrawWidth = 1

Rodzaju wykorzystywanej linii na linię przerywaną.

DrawStyle = 1

Trybu rysowania na - rysowanie aktualnym kolorem.

DrawMode = 7

  1. Do procedury tmeZegar_Timer() formy frmGrafika wpisz następujący kod:

Sub tmeZegar_Timer ()

If mnuLinia.Checked And Wykonuj = True Then

Linie

ElseIf mnuPunkt.Checked And Wykonuj = True Then

Punkty

ElseIf mnuOkrag.Checked And Wykonuj = True Then

Okregi

End If

End Sub

Instrukcja

Procedura ta wykonywana jest automatycznie co określony czas, opisany cechą Interval obiektu tmeZegar. Wykonanie procedury polega na sprawdzeniu, która komenda z menu Opcje została wybrana oraz czy został wciśnięty klawisz Start. Sprawdzenie tych warunków następuje poprzez określenie wartości cechy Checked każdej z pozycji menu Opcje (mnuPunkt, mnuLinia, mnuOkrag) oraz sprawdzenie wartości zmiennej Wykonuj (określającej czy został wciśnięty klawisz Start). Jeżeli jednocześnie spełnione są dwa warunki tzn. cecha Checked badanego w danym warunku obiektu i wartość zmiennej Wykonuj mają wartość True to wywoływana jest odpowiednia procedura. Każdy z warunków rozpoczyna się słowem If lub ElseIf kończy zaś słowem Then (np. ElseIf mnuLinia.Checked = True And Wykonuj = True Then), po którym następuje nazwa procedury do wywołania (np. Linie). Listę warunków kończymy End If.

  1. Do procedury Form_Load() formy frmGrafika wpisz następujący kod:

Sub Form_Load ()

Wykonuj = False

End Sub

Instrukcja

Procedura ta wykonywana jest podczas ładowania do pamięci komputera formy frmGrafika tworzonego programu. Przypisuje ona zmiennej Wykonuj wartość False. Zabiezbiecza to program przed automatycznym uruchomieniem procedur graficznych bez wykonania wyboru i jego potwierdzenia - klawiszem Start przez użytkownika.

  1. Do dyrektywy General w sekcji declarations formy frmGrafika wpisz następujący kod:

Option Explicit

Dim PozycjaX

Dim PozycjaY

Dim Wykonuj

Dim Czerwony

Dim Zielony

Dim Niebieski

Instrukcja

W tej części deklarujemy zmienne, które będą wykorzystywane przez więcej niż jedną procedurę.

  1. Utwórz nową procedurę Punkty(), do której wpisz następujący kod:

Sub Punkty ()

Czerwony = 255 * Rnd

Zielony = 255 * Rnd

Niebieski = 255 * Rnd

PozycjaX = Rnd * frmGrafika.ScaleWidth

PozycjaY = Rnd * frmGrafika.ScaleHeight

PSet (PozycjaX, PozycjaY), RGB(Czerwony, Zielony, Niebieski)

End Sub

Instrukcja

Procedura ta rysuje punkty o podanej pozycji i kolorze. Zarówno kolor jak i pozycja punktu są przypadkowe. Kolor wyliczany jest przez funkcje RGB na podstawie wartości barw składowych (kolorów: czerwonego, zielonego i niebieskiego). Wartości składowych przechowują zmienne: Czerwony, Zielony i Niebieski wyliczane przy każdym wywołaniu procedury na nowo w poniższych liniach kodu.

Czerwony = 255 * Rnd

Zielony = 255 * Rnd

Niebieski = 255 * Rnd

Funkcja Rnd losuje liczbę z przedziału od 0 do 1, co po pomnożeniu przez 255 daje przedział od 0 do 255, który to przedział określa wszystkie możliwe wartości barw składowych.

Pozycja punktu również jest wyliczana przy każdym uruchomieniu procedury i przechowywana w zmiennych PozycjaX i PozycjaY, co realizują poniższe linie kodu.

PozycjaX = Rnd * frmGrafika.ScaleWidth

PozycjaY = Rnd * frmGrafika.ScaleHeight

Przedział od 0 do 1 podawany przez funkcję Rnd jest rozszerzany do wewnętrznych rozmiarów formy (odpowiednio w kierunku poziomym i pionowym). Własności ScaleWidth i ScaleHeight przechowują rozmiary wewnętrzne formy (wysokość i szerokość po odliczeniu listwy tytułowej, paska menu oraz obramowań.

Punkt na ekranie rysowany jest funkcją PSet na współrzędnych określonych przez zmienne PozycjaX, PozycjaY o kolorze wyliczonym na podstawie składowych funkcją RGB.

  1. Utwórz nową procedurę Linie(), do której wpisz następujący kod:

Sub Linie ()

Dim pozycjax1, pozycjax2, pozycjay1, pozycjay2

Czerwony = 255 * Rnd

Zielony = 255 * Rnd

Niebieski = 255 * Rnd

PozycjaX1 = Int(frmGrafika.ScaleWidth * Rnd + 1)

PozycjaY1 = Int(frmGrafika.ScaleHeight * Rnd + 1)

PozycjaX2 = Int(frmGrafika.ScaleWidth * Rnd + 1)

PozycjaY2 = Int(frmGrafika.ScaleHeight * Rnd + 1)

Line(PozycjaX1,pozycjay1)-(pozycjaX2,pozycjaY2),RGB(Czerwony, Zielony, Niebieski)

End Sub

Instrukcja

Procedura ta rysuje linie od ostatniej pozycji menu lub punktu 0,0 do pozycji podanej jako argument funkcji Line. Kolor i pozycja wyliczane są w ten sam sposób co w procedurze Punkty,

  1. Utwórz nową procedurę Okregi(), do której wpisz następujący kod:

Sub Okregi ()

Dim Promien

Czerwony = 255 * Rnd

Zielony = 255 * Rnd

Niebieski = 255 * Rnd

PozycjaX = ScaleWidth / 2

PozycjaY = ScaleHeight / 2

Promien = ((PozycjaY * .9) + 1) * Rnd

Circle (PozycjaX, PozycjaY), Promien, RGB(Czerwony, Zielony, Niebieski)

End Sub

Instrukcja

Procedura ta rysuje okręgi na podanej pozycji o określonym promieniu i kolorze. Kolor jest wyliczany tak samo jak w dwóch poprzednich procedurach. Położenie środka wszystkich okręgów jest stałe i umieszczone w środku formy.

PozycjaX = ScaleWidth / 2

PozycjaY = ScaleHeight / 2

Promień jest przypadkowy i wyliczany z zależności.

Promien = ((PozycjaY * .9) + 1) * Rnd

Uruchomienie programu Grafika

  1. Uruchom program Grafika.

  1. Wybierz z menu Opcje komendę uaktywniającą rysowanie punktów, linii, okręgów lub prostokątów.

  1. Uruchom demonstrację klikając na przycisk Start.

  1. Kliknij na przycisku Stop, aby zatrzymać rysowanie.

  1. Powtórz operacje 2, 3 i 4 dla innej komendy z menu Opcje.

  1. Zakończ działanie programu wybierając komendę Koniec z menu Opcje.

Tworzenie pliku wykonywalnego (Grafika.exe)

  1. Wybierz z menu File opcję Make EXE File.

  1. Zapamiętaj plik pod nazwą Grafika.exe.

  1. Zakończ działanie Visual Basic wybierając z menu File opcję Exit.

Ćwiczenie końcowe

  1. Zmień program, tak aby powstała nowa pozycja w menu Opcje pod nazwą Przypadek. Wybór tej komendy ma powodować przypadkowe uruchamianie procedur Punkty, Linie, Okregi i Prostokaty po naciśnięciu klawisza Start.

5

9



Wyszukiwarka

Podobne podstrony:
instr,10
308, 309 instr 10[1] 2006
instr 10
cz 10 doc
List formalny(10) doc
infratruktura transportu$ 10 doc
F 56 2 (10) DOC
28 (10) doc
Wykład 09 10 DOC
CW8 (10) DOC
207 (10) DOC
SPRAC 10 DOC
F 47 (10) DOC
1M09 10 DOC
Chemia (10) doc
Niezrównoważone mostki prądu stałego 10 doc
Gasiorek Mackiewicz UOA 10 doc
F 72 (10) DOC
FIZYKA1 (10) DOC

więcej podobnych podstron