HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Grafikai effektek a ColorMatrix osztállyal


Példaprogram letöltése

26495 bájt

A ColorMatrix osztályt felhasználva egyszerűen elérhetjük azt, hogy egy Bitmap mennyire legyen áttetsző, vagy szabályozhatjuk azt is, hogy mennyire legyen látható a piros, zöld, illetve a kék színcsatorna.

A kirajzolást a Form Paint eseményénél végezzük el, így ehhez létrehozunk egy eseménykezelő függvényt.
Első lépésként be kell töltenünk azt a képet egy Bitmap osztályba melyet manipulálni szeretnénk.
      Bitmap bmp = new Bitmap(Application.StartupPath+"\\1.bmp");        
Következő lépésben a ColorMatrix osztályt hozzuk létre. Ez a mátrix egy 5 x 5-ös tömböt képvisel, melynek elemei float típusúak. Az áttetszőség, illetve a három színcsatorna láthatóságának mértékét úgy adjuk meg, hogy azokat egy-egy TrackBar komponens aktuális értékéből vesszük, melyeket a Form-on helyeztünk el. A megadható értékek 0 és 1 közé kell, hogy essenek. 1 esetén 100%-os a láthatóság, míg 0 esetén az adott szín teljesen eltűnik a képből, vagy átlátszóság esetén teljesen átlátszó lesz a kép.
      ColorMatrix cm = new ColorMatrix();
      cm.Matrix00 = (float)trackBar2.Value/100;
      cm.Matrix11 = (float)trackBar3.Value/100;
      cm.Matrix22 = (float)trackBar4.Value/100;
      cm.Matrix33 = (float)trackBar1.Value/100;
      cm.Matrix44 = 1;
A ColorMatrix értékeinek érvényesítéséhez az adott Bitmap-nál szükségünk lesz még egy ImageAttributes osztályra is. Ennél találunk egy SetColorMatrix függvényt, melyben tárolhatjuk annak értéket az ImageAttributes-ban, amit majd a kép kirajzolásánál használhatunk fel. A SetColorMatrix első paramétereként tehát egy ColorMatrix osztályt kell megadnunk. Második paraméterben arról rendelkezhetünk, hogy szürke árnyalatos, vagy színes képhez szeretnénk felhasználni az effektet. A Default értékkel mindkettőt előírjuk. A harmadik paraméterben pedig azt adhatjuk meg, hogy mihez használjuk majd az effektet. Ez jelen esetben Bitmap lesz.
      ImageAttributes attr = new ImageAttributes();        
      attr.SetColorMatrix(cm, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
Ezek után már csak az marad hátra, hogy az előkészített képet megjelenítsük. Ehhez az esemény paramétereként kapott „e” változó Graphics osztályának DrawImage függvényét használjuk fel. Annak is a következő változatát: első paraméterként a kirajzolandó képet adjuk át Bitmap típusban. Másodikként egy Rectangle osztályt, mely a kirajzolás pozícióját és a kép méretét tartalmazza. A következő négy paraméter a képen belüli pozíció és méret viszonyokat adja. Mivel a teljes képet szeretnénk kirajzolni, így itt a 0 – 0 pozíciótól a kép szélességéig és magasságáig történik a rajzolás. Ezt követő paraméterben megadjuk, hogy az adatokat Pixel-ben kell értelmezni és végül az ImageAttributes osztály következik, mely már tartalmazza a ColorMatrix adatait.
      Rectangle r = new Rectangle(100, 100, bmp.Width, bmp.Height);
      e.Graphics.DrawImage(bmp, r, 0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel, attr);

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