HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Gradient kontrol készítése web oldalhoz


Példaprogram letöltése

14065 bájt

Készítsünk egy olyan új kontrolt, melyet felhasználhatunk egy tetszőleges ASP.NET-es alkalmazásban, mely képes arra, hogy két tetszőleges szín között színátmenetet valósít meg a kontrol teljes területén. E színátmenet iránya is befolyásolható lesz: lehet függőleges, vagy vízszintes.
Fontos tudni, hogy e színátmenet nem egy legenerált kép lesz GIF, vagy JPG formában, hanem egy valós időben, a kliens böngészőjében történő kirajzolás.

A mellékelt példa futtatása előtt a Library könyvtárban található GradientControlLibrary projektet fordítsa le. Ebben található a program futásához szükséges GradientControl kontrol.
Nézzük miként is jött létre e kontrol, mely a GradientControl.cs-ben található.
A GradientControl osztályban szükségünk lesz három adat tárolására és az ezekhez való hozzáférés biztosítására property-ken keresztül. A színátmenethez kell két Color típusú property, valamint a színátmenet irányát meghatározó int típusú property. Ez utóbbinál 0 jelenti majd a függőleges, míg az 1 érték a vízszintes irányt.
  [DefaultProperty("StartColor"), ToolboxData("<{0}:GradientControl runat=server></{0}:GradientControl>")]
  public class GradientControl: System.Web.UI.WebControls.WebControl
  {
    private Color startColor = Color.Red;
    private Color endColor = Color.Yellow;
    private int gradientType = 0;
A változókhoz a property-ket a szokásos módon hozzuk létre.
    [Bindable(true), Category("Gradient")]
    public Color StartColor
    {
      get{ return startColor;}
      set{ startColor = value; }
    }
A színátmenet képzéséhez egy ún. filter-t kell felhasználjunk, melynek segítségével egy adott HTML objektum hátterét egy általunk megadott színátmenet fogja kitölteni. Ennek megvalósítása úgy néz ki, hogy az adott objektum stílusához kell felvennünk egy újat, megfelelően paraméterezve.
Nincs más teendőnk, tehát a kontrol HTML kódját előállító Render függvényben, mint egy új, filter nevű stílus felvétele. Ehhez a HtmlTextWriter osztály AddStyleAttribute függvényét használhatjuk, mely hozzáad egy új stílust a már meglévőkhöz. A függvény első paraméterében a stílus nevét, másodikban annak értékét kell megadnunk.
    protected override void Render(HtmlTextWriter output)
    {
      output.AddStyleAttribute("filter", "progid:DXImageTransform.Microsoft.Gradient (GradientType="+GradientType.ToString()+", StartColorStr='"+ColorToHexString(startColor)+"', EndColorStr='"+ColorToHexString(endColor)+"')");
      RenderBeginTag(output);
      output.Write(" ");
      RenderEndTag(output);
    }
Ha a kontrolt elhelyeztük az ASP.NET web lapon, akkor valami ilyesmit láthatunk annak forrásában:
<cc1:GradientControl id="GradientControl1" style="Z-INDEX: 101; LEFT: 56px; POSITION: absolute; TOP: 64px" runat="server" Width="352px" Height="48px" StartColor="White" EndColor="DodgerBlue"></cc1:GradientControl>
Ha futtatjuk a programot, akkor pedig ez lesz belőle:
<span id="GradientControl1" style="filter: progid:DXImageTransform.Microsoft.Gradient (GradientType=0, StartColorStr='#FFFFFFFF', EndColorStr='#FF1E90FF'); height:48px; width:352px; Z-INDEX: 101; LEFT: 56px; POSITION: absolute; TOP: 64px"> </span>

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 129. 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 |