BitmapAlpha example for Visual Basic

Note: Also works with Access 95 and 97.

This example shows how to use the BitmapAlpha property to save a region in a file's alpha channel. It also shows how to use the region as a mask for transparency.

   Dim rgntop As Single
   Dim rgnleft As Single
   Dim rgnwidth As Single
   Dim rgnheight As Single
   Dim hRGN As Long
   Dim test As Long
   
   LEAD1.ScaleMode = 3
   LEAD1.Load "v:\images\eagle.cmp", 0, 0, 1
   LEAD1.AutoRepaint = False
   'Get an alpha channel bitmap, and fill it with white
   LEAD2.Bitmap = LEAD1.BitmapAlpha
   LEAD2.SetRgnColor RGB(0, 0, 0), L_RGN_SETNOT

 

   test = LEAD2.GetRgnArea
   ' test here is test = 0, then Alpha is all black
   If test = 0 Then
      MsgBox "Alpha image is all black"
   End If

   LEAD2.Fill RGB(255, 255, 255) 
   rgntop = 0
   rgnleft = 0
   rgnwidth = LEAD1.BitmapWidth
   rgnheight = LEAD1.BitmapHeight
   
   'Create an elliptical region in the AlphaBitmap
   LEAD2.SetRgnEllipse rgntop, rgnleft, rgnwidth, rgnheight, L_RGN_SET
   'Fill the region with black
   LEAD2.Fill RGB(0, 0, 0) 
   'Free the region
   LEAD2.FreeRgn
   'Update the alpha channel in the main bitmap
   LEAD1.BitmapAlpha = LEAD2.Bitmap
   'Save the bitmap as 32-bit TGA
   LEAD1.Save "test.tga", FILE_TGA, 32, 0, SAVE_OVERWRITE
   'Free the bitmaps
   LEAD1.Bitmap = 0
   LEAD2.Bitmap = 0
   
   'Load the bitmap we just saved and get the alpha channel
   LEAD1.Load "test.tga", 0, 0, 1
   LEAD2.Bitmap = LEAD1.BitmapAlpha
   'Create a region in the AlphaBitmap that includes all of the black pixels
   LEAD2.SetRgnColor RGB(0, 0, 0), L_RGN_SET
   'Get the region from the AlphaBitmap and set it into the main bitmap
   hRGN = LEAD2.GetRgnHandle
   LEAD1.SetRgnHandle hRGN, 0, 0, L_RGN_SET
   LEAD1.PaintRgnOnly = True
   LEAD1.ForceRepaint