Elsőként valósítsuk meg az árnyék létrehozását.
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
Dim g As Graphics = 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.
Dim bmp As 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.
Dim ia As New ImageAttributes()
Dim cm As 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 = CSng(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.
Dim ia2 As New ImageAttributes()
Dim cm2 As New ColorMatrix()
cm2.Matrix00 = 1
cm2.Matrix11 = 1
cm2.Matrix22 = 1
cm2.Matrix33 = CSng(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)
End Sub 'Form1_Paint