Page 1 of 1

Painting alpha blended bmp on windows

Posted: Fri Jan 15, 2021 6:54 am
by hua
Hi guys,
When I use the code below, my alpha blended bmp is painted with black background instead of being transparent.
Which part I went wrong?

Code: Select all

     hBmp2 := ReadBitMap(0, ud_bmpDir()+"\2021.bmp")
     DrawBitmap( hDC, hBmp2, nTop, nLeft)
 
TIA

Re: Painting alpha blended bmp on windows

Posted: Fri Jan 15, 2021 2:46 pm
by ukoenig
There is a function

ABPaint( hDC := GetWindowDC( hWnd ), nLeft, nTop, oBmp:hBitmap )

sample testab.prg

DEFINE BITMAP oBmp FILENAME "..\bitmaps\AlphaBmp\Trash.bmp"
...
...
ACTIVATE WINDOW oWnd ;
ON PAINT ABPaint( hDC, 10, 10, oBmp:hBitmap, 220 ) // 0-255 transparency level

or You can use a GDIPLUS-solution
sample :

Code: Select all

// image location
c_Path := cFilePath(GetModuleFileName( GetInstance() ) ) 
c_Path1 :=  c_Path + "BITMAPS\" 
...
...
// inside window define
oWnd:bPainted := < |hDC|
    DRAWIMAGE( oWnd )
RETURN NIL
>
...
...

/ -----------------

FUNCTION DRAWIMAGE( oWnd )
LOCAL oGraphics := Graphics():New( oWnd:hDC ) 
LOCAL oImage    := GDIBmp():new( c_path1 + "FWH.bmp" ) // Image

// position top, left
oGraphics:DrawImage( oImage, 493, 15, oImage:GetWidth(), oImage:GetHeight() )

oGraphics:Destroy()
oImage:End()

RETURN NIL
regards
Uwe :D

Re: Painting alpha blended bmp on windows

Posted: Fri Jan 15, 2021 6:18 pm
by hua
Uwe,
Thank you!