BitmapAlpha example for Delphi
procedure TForm1.AlphaRGNClick(Sender: TObject);
var
rgntop : Integer;
rgnleft : Integer;
rgnwidth : Integer;
rgnheight : Integer;
hRGN : Longint;
test: Integer;
begin
LEADImage1.Load ('v:\images\image1.cmp', 0, 0, 1);
LEADImage1.AutoRepaint:= False;
{Get an alpha channel bitmap, and fill it with white}
LEADImage2.Bitmap:= LEADImage1.BitmapAlpha;
LEADImage2.SetRgnColor (RGB(0, 0, 0), L_RGN_SETNOT);
test:= LEADImage2.GetRgnArea ();
//test here is test = 0, then Alpha is all black
if (test = 0) then
ShowMessage ('Alpha image is all black');
LEADImage2.Fill (RGB(255, 255, 255));
rgntop := 0;
rgnleft := 0;
rgnwidth := LEADImage1.BitmapWidth;
rgnheight := LEADImage1.BitmapHeight;
{Create an elliptical region in the AlphaBitmap}
LEADImage2.SetRgnEllipse (rgntop, rgnleft, rgnwidth, rgnheight, L_RGN_SET);
{Fill the region with black}
LEADImage2.Fill(RGB(0, 0, 0));
{Free the region}
LEADImage2.FreeRgn ();
{Update the alpha channel in the main bitmap}
LEADImage1.BitmapAlpha:= LEADImage2.Bitmap;
{Save the bitmap as 32-bit TGA}
LEADImage1.Save ('test.tga', FILE_TGA, 32, 0, SAVE_OVERWRITE);
{Free the bitmaps}
LEADImage1.Bitmap:= 0;
LEADImage2.Bitmap := 0;
{Load the bitmap we just saved and get the alpha channel}
LEADImage1.Load ('test.tga', 0, 0, 1);
LEADImage2.Bitmap := LEADImage1.BitmapAlpha;
{Create a region in the AlphaBitmap that includes all of the black pixels}
LEADImage2.SetRgnColor (RGB(0, 0, 0), L_RGN_SET);
{get the region from the AlphaBitmap and set it into the main bitmap}
hRGN := LEADImage2.GetRgnHandle ();
LEADImage1.SetRgnHandle (hRGN, 0, 0, L_RGN_SET);
LEADImage1.PaintRgnOnly := True;
LEADImage1.ForceRepaint ();
end;