HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

ImageList komponens használata


Példaprogram letöltése

9937 bájt

Az ImageList komponenst felhasználva képesek vagyunk arra, hogy több képet eltároljunk egy „tömbbe”, melyeket ezek után tetszőlegesen felhasználhatunk. Sok más komponens igényli is az ImageList használatát a képek megjelenítéséhez (pl.: ListView, TreeView), de akár saját magunk is felhasználhatjuk az így eltárolt képeket. Másik előnye e komponens használatának az, hogy az így eltárolt képek bekerülnek a készítendő EXE-be, így azokat nem kell a programunkkal együtt szállítanunk, ha azt egy másik gépen is futtatni szeretnénk.

Mellékelt példában egy olyan alkalmazást készítünk, melyben egy ImageList képeit megjelenítjük a Form-on úgy, hogy azok véletlenszerű irányban mozognak megállás nélkül.
Ehhez persze kell egy ImageList komponens. Miután ezt levettük a ToolBar-ról, kattintsunk az Images property-jére. A megjelenő kollekció szerkesztő ablakban tetszőleges számú képet felvehetünk az ImageList-be az Add gomb segítségével.
Ha ezzel megvagyunk, akkor a Form-hoz létrehozzuk a Paint eseménykezelőt, ahol a képek kirajzolását végezzük el. Ehhez szükségünk lesz egy Random osztályra, valamint egy ciklusra, mely végigmegy az összes képen. Az egyes képek X, Y koordinátáját egy array nevű tömbbe tároljuk. Ezt a tömböt a Form-unk konstruktoránál hozzuk létre és töltjük fel véletlenszerű értékekkel, mint kiinduló pozíció.
Dim r As Random = New Random()
    Dim i As Integer
    For i = 0 To ImageList1.Images.Count - 1 Step i + 1
        Array(i).X = r.Next(Width / 3) * 2
        Array(i).Y = r.Next(Height / 3) * 2
    Next
A Paint eseménykezelőnél tehát adott egy ciklus, mely az ImageList komponens összes képén egyesével végigmegy. Hogy hány kép van eltárolva, azt az Images property Count property-jéből tudhatjuk meg. A létrehozott Random osztály segítségével azt szabályozzuk, hogy az adott kép milyen irányba mozogjon és hány pixelt lépjen. Az új értéket tároljuk az array tömbünkbe, majd az ImageList komponens Draw függvényének hívásával elvégezzük az adott kép kirajzolását. Ehhez első paraméterként egy Graphics osztályt kell megadnunk, melyen keresztül a rajzolás elvégezhető, másodikként egy Point struktúrát, amely az X, Y koordinátát adja meg, ezt természetesen az array tömbünkből vesszük, végül pedig a kirajzolandó képnek a sorszámát kell megadnunk. Ez a sorszám az ImageList komponens Images property-jében tárolt képek sorszáma, melynek számozása nullától kezdődik.
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    Dim g As Graphics = e.Graphics
    Dim r As Random = New Random()
    Dim i As Integer
    For i = 0 To ImageList1.Images.Count - 1 Step i + 1
        Array(i).X += r.Next(10) - 4
        Array(i).Y += r.Next(10) - 4
        ImageList1.Draw(g, Array(i), i)
    Next
End Sub
Ahhoz, hogy ezek a kis rajzok állandóan mozogjanak, szükségünk van még egy Timer komponensre is. Ennek Tick eseményéhez létrehozunk egy kezelő függvényt, amelynél érvénytelenítjük a Form tartalmát, mely így újrarajzolásra kerül, vagyis lefut ismét a Paint eseménykezelője. A Timer-nél az Interval property értékét 100-ra állítjuk, ezzel megközelítőleg 0.1 másodpercenként kerül sor a Tick esemény aktivizálására.
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    Invalidate()
End Sub

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |