Microsoft & .NETVisual C#Fading A Bitmap / PictureBox

Fading A Bitmap / PictureBox

Developer.com content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

Author: Aaron Young
Author’s WebSite: http://www.pressenter.com/~ajyoung

This short bit of code shows how to fade a picture inside a PictureBox using a few simple WinAPI methods.

Screen-shot

The code works by creating a memory compatible DC and Bitmap to that of the picture within the PictureBox. The PictureBox is then cleared and has it’s background set to various shades of gray (eventually black) – the bitmap is then ‘blitted’ to the PictureBox and each pixel is ‘AND’ed with the background colour to achieve the fade effect.


'
' Form1 with a PictureBox (picture1) and a command button (command1)
'
'
private Declare Function BitBlt Lib "gdi32" (byval hDestDC as Long, _
byval x as Long, byval y as Long, byval nWidth as Long, _
byval nHeight as Long, byval hSrcDC as Long, byval xSrc as Long, _
byval ySrc as Long, byval dwRop as Long) as Long
private Declare Function CreateCompatibleDC Lib "gdi32" _
(byval hdc as Long) as Long
private Declare Function CreateCompatibleBitmap Lib "gdi32" _
(byval hdc as Long, byval nWidth as Long, byval nHeight as Long) as Long
private Declare Function DeleteDC Lib "gdi32" (byval hdc as Long) as Long
private Declare Function DeleteObject Lib "gdi32" _
(byval hObject as Long) as Long
private Declare Function SelectObject Lib "gdi32" (byval hdc as Long, _
byval hObject as Long) as Long
'
private Declare Sub Sleep Lib "kernel32" (byval dwMilliseconds as Long)
'
private Const SRCAND = &H8800C6
private Const SRCCOPY = &HCC0020
'
private Sub Command1_Click()
Dim lDC as Long
Dim lBMP as Long
Dim W as Integer
Dim H as Integer
Dim lColor as Long
'
Screen.MousePointer = vbHourglass
'
W = ScaleX(Picture1.Picture.Width, vbHimetric, vbPixels)
H = ScaleY(Picture1.Picture.Height, vbHimetric, vbPixels)
'
' Create Memory Compatible Bitmap to that in Picture1
'
lBMP = CreateCompatibleBitmap(Picture1.hdc, W, H)
'
' Create Compatible DC in memory
'
lDC = CreateCompatibleDC(Picture1.hdc)
'
' Select the Bitmap into the memory DC
'
Call SelectObject(lDC, lBMP)
BitBlt lDC, 0, 0, W, H, Picture1.hdc, 0, 0, SRCCOPY
'
' Quickly clear the Picture in Picture1
'
Picture1 = LoadPicture("")

for lColor = 255 to 0 step -3
'
' set the backcolor to a gray scale -> black
'
Picture1.BackColor = RGB(lColor, lColor, lColor)
'
' Copy the bitmap into the picturebox 'AND' with the backcolor
'
BitBlt Picture1.hdc, 0, 0, W, H, lDC, 0, 0, SRCAND
'
' Pause for a bit
'
Sleep 15
next
'
' Clear up our DC's and Bitmaps
'
Call DeleteDC(lDC)
Call DeleteObject(lBMP)
Screen.MousePointer = vbDefault
'
End Sub
'

Download Zipped Project Files (3k)

Posted On: 20-Jan-2000

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Latest Posts

Related Stories