HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Árnyékképzés, átlátszóság mátrix műveletek útján


Példaprogram letöltése

9508 bájt

GDI+ által biztosított grafikai mátrix műveletekkel igen sokféle tevékenységet vagyunk képesek elvégezni, így például egy kép mögé árnyékot is készíthetünk, de akár egy kép átlátszóságát is befolyásolhatjuk.

Elsőként valósítsuk meg az árnyék létrehozását.
    private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
      Graphics g = e.Graphics;
      ...
Mind a két esetben egy olyan GIF képet használunk fel, melyben adott egy szín ahol átlátszó a kép. Az árnyéknak így a kép szélein kell megjelennie.
      Bitmap bmp = new Bitmap(Application.StartupPath+"\\1.gif");
Létrehozunk egy ImageAttributes osztályt, melynek SetColorMatrix függvényével állítjuk be az új mátrix tulajdonságokat, amit fel kell használni a képhez.
      ImageAttributes ia = new ImageAttributes(); 
      ColorMatrix cm = new ColorMatrix(); 
Árnyék létrehozásához az alábbi értékek megadása szükséges. A Matrix33 property-ben megadott szám mértékében lesz látható az árnyék.
      cm.Matrix00 = 0; 
      cm.Matrix11 = 0; 
      cm.Matrix22 = 0; 
      cm.Matrix33 = (float)trackBar1.Value/10; 
      ia.SetColorMatrix(cm); 
Ezt követően már csak ki kell rajzolnunk úgy a képet, hogy felhasználjuk az ImageAttributes osztályt.
      g.DrawImage(bmp, new Rectangle(10+trackBar2.Value, 10+trackBar2.Value, bmp.Width, bmp.Height), 0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel, ia); 
Ezt követően kirajzoljuk az eredeti képet is, rá az árnyékra.
      e.Graphics.DrawImage(bmp, 10, 10);
Az átlátszóság szabályozása hasonlóan történik, mint az árnyék képzése. Az alábbi adatok segítségével azt szabályozhatjuk, hogy a kirajzolásra kerülő kép milyen mértékben lehet áttetsző. Ennek pontos mértékét szintén a Matrix33 property értéke adja.
      ImageAttributes ia2 = new ImageAttributes(); 
      ColorMatrix cm2 = new ColorMatrix(); 
      cm2.Matrix00 = 1; 
      cm2.Matrix11 = 1; 
      cm2.Matrix22 = 1; 
      cm2.Matrix33 = (float)trackBar3.Value/10; 
      ia2.SetColorMatrix(cm2); 
      g.DrawImage(bmp, new Rectangle(220, 10, bmp.Width, bmp.Height), 0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel, ia2); 
    }

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