A példában meg kell adni, hogy hány másodpercig jelezzen a kontrol – a kép megváltoztatásával - majd meg kell nyomni a MŰVELET gombot. Az idő lejártával a kontrolban az eredeti, alapállapotban látható kép jelenik meg ismét.
A kontrol ImageList komponense tartalmazza a light.bmp képben megtalálható két képet, melyet erőforrásként a projekt részévé tettünk. A kontrol konstruktorában be kell állítanunk a kép méretétől és típusától függő paramétereket az ImageList komponensben.
imageList1.ImageSize=new Size(18,27);
imageList1.ColorDepth = ColorDepth.Depth24Bit;
Majd a komponens AddStrip metódusával feldolgozzuk a képi erőforrást.
imageList1.Images.AddStrip(new Bitmap(GetType(),"light.bmp"));
A kontrol látható felületének mérete a képek valamelyikének méretével egyezik meg.
Size s = new Size(imageList1.Images[0].Width,imageList1.Images[0].Height);
Size = s;
A kontrol Delay property-jében adható meg a jelzési intervallum ezredmásodpercben.
public int Delay
{
get
{
return delay;
}
set
{
delay = value;
}
}
A kontrol OnPaint metódusában gondoskodunk arról, hogy mindig az aktuális kép jelenjen meg a kontrolban, és hogy a kép a kontrol átméretezésekor is mindig középen legyen.
Graphics g = pe.Graphics;
...
g.DrawImage(bmp,(clientSize.Width-bmp.Width)/2,(clientSize.Height-bmp.Height)/2,bmp.Width,bmp.Height);
A kontrol Execute metódusában indítjuk el a műveletet, vagyis az időzítő objektumot, valamint megjelenítjük a másik képet.
public void Execute()
{
timer1.Interval = delay;
bmp = new Bitmap(imageList1.Images[1]);
timer1.Start();
Invalidate();
}
A Timer objektum Interval property-jét állítjuk be a Delay property-ben megadott értékre, és amikor először lefut az időzítő metódusa, akkor abban le is állítjuk azt.
timer1.Stop();
timer1.Enabled = false;
bmp = new Bitmap(imageList1.Images[0]);
Invalidate();
A kontrolban megadott lámpa ekkor kialszik, a képet visszaállítjuk az eredeti képre.