HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Grafikus megjelenésű TrackBar kontrol készítése


Példaprogram letöltése

13840 bájt

A .NET Framework kontroljai funkcionalitás terén igen hasznosak, azonban a megjelenésük egyszerű. Ezért mindig nagy kihívás lehet egy-egy kontrol funkcionalitását egy tetszetősebb külső mögé bújtatni. Erre a .NET esetén meg is van minden lehetőségünk. Cikkünkben a Windows-os TrackBar kontrol megjelenítésén javítunk egy picit, színesítve azt.

A kontrol funkcionalitásában nem különbözik a hagyományos TrackBar kontroltól, csupán a külsején csiszoltunk. A kontrol felületét egy színátmenettel töltöttük ki, szükség esetén – a megfelelő property igazra állításával – az aktuális értéket is jelzi százalékban.
A kontrol fölött lenyomva az egeret elérhető, hogy a Value property értékén változtassunk, csakúgy, mint az eredeti kontrolban. A funkcionalitás azonossága miatt létrehoztuk azokat a property-ket, melyek az eredeti kontrolban is megtalálhatók. Ezek a következők:
  • Minimum
  • Maximum
  • Value
Valamint újakat is létrehoztunk:
  • StartColor: a színátmenet kezdőszíne
  • EndColor: a színátmenet záró színe
  • ShowPercentage: jelezze-e a kontrol az értéket százalékban
Az egéresemények kezelésére a következő metódusokat írtuk felül:
  • OnMouseDown
  • OnMouseMove
  • OnMouseUp
Az egér lenyomásakor és mozgatásakor megvizsgáljuk, hogy a téglalap melyik pozíciójában található éppen a kurzor és a téglalap kezdőpontja, valamint a kurzor pontja közötti résztéglalap területét kitöltjük egy másik színnel, jelezve az aktuális értéket.
Ezekben a műveletekben segítenek az Optimizing és a SetValue segédfüggvények.
Az OnPaint metódusban rajzoljuk ki a kontrolt a pillanatnyi értékekkel. Első lépésben létrehozzuk a szükséges ecseteket a kitöltés függvényében.
base.OnPaint(e);
if (back == null) 
{
  back = new LinearGradientBrush(new Point(0, 0),new Point(ClientSize.Width, 0),StartColor,EndColor);
  if (BackgroundImage != null) 
  {
    back = new TextureBrush(BackgroundImage);
  }        
}
Amennyiben a százalékos megjelenítést választjuk, akkor annak a karakterlánca, ellenkező esetben a kontrol neve jelenik meg a kontrol felületén.
if (ShowPercentage) 
{
  dValue = Convert.ToInt32((int)(percentValue * 100f));
  display = Convert.ToString((int)(percentValue * 100f)) + "%";
}
else 
{
  display = text;
}
A művelet záróakkordja, hogy a megfelelő színnel kitöltjük a téglalapot, majd a felületre írjuk a megfelelő karakterláncot.
e.Graphics.FillRectangle(back,ClientRectangle);
e.Graphics.FillRectangle(dim,client);
e.Graphics.Flush();
if (display != null && display.Length > 0) 
{
  e.Graphics.DrawString(display, Font, new SolidBrush(ForeColor), textRect);
}
A kliensalkalmazásban a kontrol ValueChanged eseményéhez deklaráltunk egy kezelőmetódust.
gtbControl1.ValueChanged += new EventHandler(gtbControl1_ValueChanged);
Ebben egyszerűen – úgy, mint az eredeti kontrolban – lekérdezzük a Value property értékét.
label4.Text = "Az aktuális érték: " + gtbControl1.Value.ToString();

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 649. oldal

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 |