VISUAL BASIC ALAPISMERETEK
11. Grafika 11. Gyakorlat témaköre: • Kiválasztógomb (Option Button) és a jelölőnégyzet (CheckBox) használata • Kör, ellipszis (Circle) rajzolása.
Circle (X, Y), Sugár, QBColor(Szín), kezdőszög, végszög, osztásarány
•
Az (X,Y) a kör középpontjának koordinátája. A Sugár a kör sugara. A szögeket radiánban kell megadni. Az alapértelmezés szerint a kezdőszög 0, végszög 2*pi. Határ mindkét szögre: -2*pi és 2*pi radián. Az osztásarány alapértelmezése: 1 Ellipszis rajzolása. Például legyen az osztásarány: 1 / 2.
•
Vonal rajzolása. A két koordinátapont között egyenes vonalat rajzol.
Circle (X, Y), Sugár, QBColor(Szín), , , 1 / 2 Line (X1, Y1)-(X2, Y2), QBColor(Szín)
•
Doboz rajzolása: négyzet, téglalap.
• • • •
Az (X1,Y1) a doboz bal felső, (X2,Y2) a jobb alsó sarkának koordinátái. B esetén a négyzet vagy téglalap kerete, BF esetén a beállított FillColor (kifestő színnel) és FillStyle (kifestő stílussal) kifestett négyzet vagy téglalap jelenik meg. Előregyártott alakzatok (Shape) rajzolása. Képek (PictureBox) megjelenítése. Képek (Image) megjelenítése animáció céljából, időzítő (Timer) használata. CommonDialog vezérlő használata.
Line (X1, Y1)-(X2, Y2), QBColor(Szín), BF
1. Feladat: Rajzoljunk választhatóan kör, téglalap, ellipszis alakzatokat! Legyen lehetőség a rajz törlésre is. (GYAK11_1) A program futási képe:
A Form1 eseménykezelő eljárásai: Option Explicit ' Alapállapot beállítása Private Sub Form_Load() Torles.Value = True ' A törlés választógomb kijelölése Left = 1440 Top = 1005 End Sub ' Ellipszis rajzolása zöld színnel Private Sub Ellipszis_Click() Circle (700, 2300), 600, QBColor(10), , , 1 / 2 End Sub ' Kör rajzolása piros színnel Private Sub Kor_Click() Circle (500, 500), 200, QBColor(12) End Sub ' Kék színnel befestett téglalap rajzolása Private Sub Teglalap_Click() Line (500, 1000)-(1200, 1600), QBColor(9), BF End Sub
1
11. GYAKORLAT
VISUAL BASIC ALAPISMERETEK
' Törli a form ablakát Refresh metódus hívásával Private Sub Torles_Click() Refresh End Sub
2. Feladat: Rajzoljunk alakzatokat a Shape vezérlő segítségével! (GYAK11_2) A program futási képe: Minta a téglalap és a négyzet rajzolására: ' Téglalap rajzolása Private Sub Option1_Click() Shape1.Shape = 0 End Sub ' Négyzet rajzolása Private Sub Option2_Click() Shape1.Shape = 1 End Sub
Shape vezérlő Shape tulajdonságába a jelölőgombon való kattintáskor beírt 0,1,2,3,4 illetve 5 konstansokkal jeleníthetjük meg az alakzatokat. 3. Feladat: Jelenítsünk meg egy bitképet a PictureBox vezérlő segítségével! (GYAK11_3) A program futási képe: PictureBox vezérlő Picture tulajdonsága alkalmas a bitkép megjelenítésére.
A bitkép megjelenítéséhez deklarálnunk kell egy Picture típusú változót: Option Explicit Dim kep As Picture
A Set utasítással a kep változóba a bitképet a LoadPicture metódussal töltjük be. A LoadPicture metódus paraméterében adjuk meg a kép könyvtárának útvonalát az App.Path tulajdonsággal (App – az alkalmazás objektuma), majd hozzáadjuk a \ jelet és a bitkép állománynevét. A képet a Picture1 objektum Picture tulajdonságával jeleníthetjük meg. Private Sub Megjelenit_Click() Set kep = LoadPicture(App.Path + "\bitkep2.bmp") Set Picture1.Picture = kep End Sub
4. Feladat: Jelenítsünk meg bitképet a PictureBox vezérlő segítségével, de a bitkép állománynevét párbeszédablakból lehessen kiválasztani! (GYAK11_4) A CommonDialog vezérlő betöltéséhez válasszuk ki a Project/Components menüpontot, a megjelenő párbeszédablakban pedig jelöljük be az alábbi jelölőnégyzetet:
Az OK gomb megnyomásával a vezérlő betöltődik. 2
11. GYAKORLAT
VISUAL BASIC ALAPISMERETEK
Helyezzük a formra a CommonDialog vezérlőt.
A program futási képei:
A Form1 eseménykezelő eljárása: Option Explicit Dim kep As Picture
A Kép megjelenítése parancsgomb eseménykezelő eljárása. Private Sub Megjelenit_Click() Dim InpNev As String CommonDialog1.Filter = "kep (*.bmp) | *.bmp" CommonDialog1.InitDir = App.Path CommonDialog1.ShowOpen InpNev = CommonDialog1.FileName Set kep = LoadPicture(InpNev) Set Picture1.Picture = kep End Sub
5. Feladat: Készítsünk programot, amely két bitképet mozgat animáció céljából az Image vezérlő felhasználásával! Az animáció időzítését a Timer vezérlő kezelje! (GYAK11_5) A formra két
Image és egy
Timer vezérlőt helyezünk el.
A két bitképet a tervezési fázisban kell betölteni. Kiválasztjuk az Image1 objektumot, majd a Picture tulajdonság gombján kattintva a megjelenő párbeszédablakból betölthetjük a kívánt képet, ugyanígy töltjük az Image2 objektumot is. Ha nem sikerülne az objektumot az egérrel kiválasztani, akkor a (Properties) tulajdonság ablak objektum listájából válasszuk ki. A Form_Load eseménykezelő eljárásban a második kép bal felső sarkát az első kép bal felső sarokpontjára állítjuk, hogy a két kép egy helyen jelenjen meg. A program indulásakor az első képet látjuk, a második képet eltüntetjük a Visible tulajdonságának False értékre állításával. 3
11. GYAKORLAT
VISUAL BASIC ALAPISMERETEK
Private Sub Form_Load() Image2.Left = Image1.Left Image2.Top = Image1.Top Image1.Visible = True ' a kép látható Image2.Visible = False ' a kép láthatatlan End Sub
A Timer objektum Interval tulajdonságát 500 ms-ra állítjuk, ennek következtében a Timer1_Timer eseménykezelő eljárás az Interval tulajdonságban beállított idő elteltével hívódik meg mindaddig, míg a programot le nem állítjuk. A képek 500 msec-onként felváltva jelennek meg, vagyis két képből álló animációt hoztunk létre. Private Sub Timer1_Timer() Image1.Visible = Not Image1.Visible Image2.Visible = Not Image2.Visible End Sub
A program két futási képe:
6. Feladat: Tervezzünk menüvezérelt programot, amelynek menüpontjai téglalapot, kört rajzolnak az ablakba, valamint törlik az ablakot! (GYAK11_6) A program futási képei:
Alakzatokat a formra rajzoljuk! Téglalap rajzolása:
Line (500, 1000)-(1200, 1600), QBColor(9), BF
Kör rajzolása:
Circle (1500, 500), 500, QBColor(12)
7. Feladat: Tervezzünk felbukkanó menüvel (popup) vezérelt programot, amely téglalapot, kört rajzol és törli az ablakot! (GYAK11_7) A program egy futási képe:
4
11. GYAKORLAT
VISUAL BASIC ALAPISMERETEK
Emlékeztető: Az egér gombjának a felemelésekor megszólaló Form_MouseUp eseménykezelő eljárást úgy hozzuk létre, hogy a programkód felett lévő Object legördülő menüből kiválasztjuk a Form objektumot, és a Procedure ablakból pedig a MouseUp eseményt. Ennek az eljárásnak egyetlen If utasítása lesz, amely megvizsgálja, hogy mikor egyenlő a Button paraméter 2-vel, mert ez éppen az egér jobb gombjának felemelését jelenti, és ekkor hívódik meg a PopupMenu metódus a titkosított menü nevével és az egér X,Y koordinátájával. A két vessző a Menu után a Shift paraméter figyelmen kívül hagyását jelenti, tehát nem kezeli a Shift billentyűvel lenyomott egér gombot. Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then PopupMenu Menu, , X, Y End Sub
A GYAK11_6 feladatban megadott alakzatokat rajzoljuk. 8. Feladat: Készítsünk több formos menüvezérelt programot, amellyel kiválaszthatjuk a rajzolás színét, a rajzolni kívánt alakzatot, majd a kiválasztott alakzatot megrajzoljuk! (GYAK11_8) Használjunk Modult az alakzat és a szín kiválasztásához szükséges változók globális deklarálására. Option Explicit Public alak As Integer, Szine As Integer
A Form1 tartalmazza a főmenüt
A Form1 eseménykezelő eljárásai: Option Explicit ' Beállítjuk a változók alapállapotát Private Sub Form_Load() Left = 1440 Top = 1005 alak = 0 Szine = 1 End Sub ' Megjelenítjük a szin választó ablakot Private Sub Szin_Click() Form2.Show vbModal End Sub ' Megjelenítjük az alakzat választó ablakot Private Sub Alakzat_Click() Form3.Show vbModal End Sub ' Megjelenítjük a rajzolás ablakát Private Sub Rajzol_Click() Form4.Show vbModal End Sub ' A program futását leállítjuk Private Sub Kilepes_Click() End End Sub
A projekthez újabb formot a Project menü Add Form menüpontjának kiválasztásával adhatunk. A form megjelenítése a Show metódussal történik: Form2.Show vbModal A vbModal paraméter azt jelenti, hogy míg a formot nem zártuk le, másik formot nem jeleníthetünk meg. A form ablak bezárása, eltüntetése Hide metódussal történik.
5
11. GYAKORLAT
VISUAL BASIC ALAPISMERETEK
A Form2 teszi lehetővé a szín kiválasztását: A választógombok a Színe változót állítják be a szín értékének megfelelően: Private Sub Kék_Click() Szine = 1 End Sub Private Sub Piros_Click() Szine = 4 End Sub
Private Sub Zöld_Click() Szine = 2 End Sub Private Sub Bezár_Click() Hide End Sub
A Form3 esetén az alakzat típusát választhatjuk ki: A jelölőnégyzet bejelölt állapota a Kört, jelöletlen állapota a Téglalap alakzatot választja ki: Private Sub Check1_Click() If Check1.Value = vbChecked Then alak = 1 ' kör választása Else alak = 2 ' téglalap választása End If End Sub
A Form4 Rajzolás parancsgombjának megnyomásakor a korábban a kiválasztott alakzatot a kiválasztott színnel megrajzolja: Private Sub Rajzolás_Click() If alak = 1 Then Circle (1000, 600), 500, QBColor(Szine) Else Line (1200, 1200)-(1800, 1900), QBColor(Szine), BF End If End Sub Private Sub Bezár_Click() Hide End Sub
9. Feladat: Tervezzünk programot az ablak háttérszínének megadására! Használjunk hibakezelést. A szövegablak csak két karaktert fogadhat! (GYAK11_9) A Form_Load eseménykezelő eljárásban a szövegablak MaxLength tulajdonságát állítsuk 2-re, hogy csak két karakter hosszú adatot tudjon fogadni: Text1.MaxLength= 2 Fejezzük be a feladatot a hibajelzés kezelésével! Private Sub Text1_Change() On Error GoTo Hiba If Text1.Text <> "" Then szin = CInt(Text1.Text) If szin >= 0 And szin <= 15 Then BackColor = QBColor(szin) Else MsgBox "Hibás adat", vbExclamation, "Hibajelzés" End If End If Exit Sub . . .
End Sub
6