HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

LinearGradient ecset használata rajzhoz


Példaprogram letöltése

8558 bájt

A LinearGradient típusú ecsetek használatakor olyan folytonos színátmenetet hozhatunk létre egy-egy grafikai objektumunk hátterén, mely két tetszőleges szín között jön létre.

A kirajzolást a Form hátterére végezzük el, így a Paint eseményt használhatjuk fel a rajzoláshoz. A színátmenethez szükséges két színt két globális változóban (FStartColor, FEndColor) tároljuk, melyeket meg is tudunk változtatni futási időben egy ColorDialog komponens segítségével.
      protected void Form1_Paint (object sender, System.WinForms.PaintEventArgs e)
      {
        Graphics g = e.Graphics;
Kirajzolás előtt létre kell hoznunk a szükséges ecsetet, melyhez a LinearGradientBrush osztályból kell egy példányt létrehozni. Itt első paraméterként meg kell adnunk azt a téglalapot, melyen belül a színátmenetet megvalósítjuk. Ez a téglalap nem függ össze a majdan kirajzolandó grafikával, csak meghatározza annak befoglaló téglalap méretét, ettől a grafikánk még tetszőleges alakú lehet. Második és harmadik paraméterbe jön az a két szín, mely között a színátmenet megvalósul. Negyedik paraméterbe egy szög értéket adhatunk meg fokban. A színátmenet iránya ettől a szögtől függ.
        LinearGradientBrush brush = new LinearGradientBrush(ClientRectangle, FStartColor, FEndColor, trackBar3.Value);
Arra is van lehetőségünk, hogy a két szín ne azonos arányban legyen jelen a színátmenetben. Ehhez a Blend property-t kell felhasználnunk, mely egy Blend osztályt vár. Itt a Factors és Positions property-ken keresztül adható meg a két szín aránya nulla és egy közötti értékben, melyekhez a példaprogram trackBar1 és trackBar2 kontrollja szolgáltatja az értéket.
        Blend b = new Blend(1);
        b.Factors[0] = (float)trackBar1.Value / 100;
        b.Positions[0] = (float)trackBar2.Value / 100;
        brush.Blend = b;
A SetBlendTriangularShape függvény hívásával azt is elérhetjük, hogy a két szín három legyen. Tesszük ezt úgy, hogy a színátmenet elindul a kezdő színből, majd átmegy a végsőbe és utána ismét visszamegy a kezdőszínbe. Ennek mértékét a függvény első paraméterében adhatjuk meg, míg a másodikban a végső szín erőssége határozható meg. Mindkét szám 0 és 1 közötti kell, hogy legyen.
        brush.SetBlendTriangularShape((float)trackBar4.Value / 100, (float)trackBar5.Value / 100);
Ezek után már nem marad más, mint egy grafikai objektum kirajzolása, mely jelen esetben egy ellipszis lesz.
        g.FillEllipse(brush, 0, 0, ClientSize.Width, ClientSize.Height);
        g.DrawEllipse(new Pen(Color.Black, 2), ClientRectangle);
Lehetőségünk van arra is, hogy a létrehozott színátmenetet menet közben további szög értékkel elforgassuk. Ehhez a RotateTransform függvény hívása szükséges, melynek paraméterében megadható az elforgatás mértéke fokban.
        brush.RotateTransform(180);
…
      }

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