FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Painting alpha blended bmp on windows
Posts: 1096
Joined: Fri Oct 28, 2005 02:27 AM
Painting alpha blended bmp on windows
Posted: Fri Jan 15, 2021 06:54 AM
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 (fw): Select all Collapse
     hBmp2 := ReadBitMap(0, ud_bmpDir()+"\2021.bmp")
     DrawBitmap( hDC, hBmp2, nTop, nLeft)


TIA
FWH 11.08/FWH 19.12

BCC5.82/BCC7.3

xHarbour/Harbour
Posts: 4043
Joined: Wed Dec 19, 2007 06:40 PM
Re: Painting alpha blended bmp on windows
Posted: Fri Jan 15, 2021 02:46 PM
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 (fw): Select all Collapse
// 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 :-)
Since 1995 ( the first release of FW 1.9 )

i work with FW.

If you have any questions about special functions, maybe i can help.
Posts: 1096
Joined: Fri Oct 28, 2005 02:27 AM
Re: Painting alpha blended bmp on windows
Posted: Fri Jan 15, 2021 06:18 PM

Uwe,
Thank you!

FWH 11.08/FWH 19.12

BCC5.82/BCC7.3

xHarbour/Harbour

Continue the discussion