#include "Fivewin.ch"
FUNCTION MAIN()
LOCAL hBmp := LOADIMG( "c:\fwh\bitmaps\olga1.jpg" )
? hBmp
? HASALPHA( hBmp )
RETURN NIL
FUNCTION LOADIMG( cFile )
IF !FILE( cFile )
RETURN 0
ENDIF
IF UPPER( CFILEEXT( cFile ) ) = "BMP"
RETURN READBITMAP( 0, cFile )
ENDIF
RETURN GDIP_IMAGEFROMFILE( cFile, .T., UPPER( CFILEEXT( cFile ) ) = "GIF" )
#include "Fivewin.ch"
FUNCTION MAIN()
local cFile := "d:\fwh\fwhteam\bitmaps\olga1.jpg"
local hBmp := LoadImg( cFile )
? hBmp, HASALPHA( hBmp )
? GdiplusImagePixGetAlpha( GdiPlusImageLoadCachedFile( cFile ) ), ;
( GdiplusImagePixGetAlpha( GdiPlusImageLoadCachedFile( cFile ) ) = 0 )
cFile := "D:\Fwh\FwhTeam\bitmaps\AlphaBmp\android.bmp"
hBmp := LoadImg( cFile )
? hBmp, HASALPHA( hBmp )
? GdiplusImagePixGetAlpha( GdiPlusImageLoadCachedFile( cFile ) ), ;
( GdiplusImagePixGetAlpha( GdiPlusImageLoadCachedFile( cFile ) ) = 0 )
Return NIL
//----------------------------------------------------------------------------//
FUNCTION LoadImg( cFile )
IF !FILE( cFile )
RETURN 0
ENDIF
IF UPPER( CFILEEXT( cFile ) ) = "BMP"
RETURN READBITMAP( 0, cFile )
ENDIF
Return GDIP_IMAGEFROMFILE( cFile, .T., UPPER( CFILEEXT( cFile ) ) = "GIF" )
#include "Fivewin.ch"
FUNCTION MAIN()
local oBmp
local cFile := "d:\fwh\fwhteam\bitmaps\olga1.jpg"
local hBmp := LoadImg( cFile )
? hBmp, HASALPHA( hBmp )
? GdiplusImagePixGetAlpha( GdiPlusImageLoadCachedFile( cFile ) ), ;
( GdiplusImagePixGetAlpha( GdiPlusImageLoadCachedFile( cFile ) ) = 0 )
cFile := "D:\Fwh\FwhTeam\bitmaps\AlphaBmp\android.bmp"
hBmp := LoadImg( cFile )
? hBmp, HASALPHA( hBmp )
? GdiplusImagePixGetAlpha( GdiPlusImageLoadCachedFile( cFile ) ), ;
( GdiplusImagePixGetAlpha( GdiPlusImageLoadCachedFile( cFile ) ) = 0 )
cFile := "d:\fwh\fwhteam\bitmaps\olga1.jpg"
oBmp := GdiBmp():New( cFile )
? oBmp:IsAlphaChannel(), oBmp:Is32Bits()
oBmp:Destroy()
cFile := "D:\Fwh\FwhTeam\bitmaps\AlphaBmp\android.bmp"
oBmp := GdiBmp():New( cFile )
? oBmp:IsAlphaChannel(), oBmp:Is32Bits()
oBmp:Destroy()
Return NIL
//----------------------------------------------------------------------------//
FUNCTION LoadImg( cFile )
IF !FILE( cFile )
RETURN 0
ENDIF
IF UPPER( CFILEEXT( cFile ) ) = "BMP"
RETURN READBITMAP( 0, cFile )
ENDIF
Return GDIP_IMAGEFROMFILE( cFile, .T., UPPER( CFILEEXT( cFile ) ) = "GIF" )
struct ABGRStruct {
BYTE a,b,g,r;
};
FILE *f = fopen("the_file_name.bmp", "rb");
if(f){
int w, h;
fseek(f, 0x12, SEEK_SET);
fread(&w, 1, sizeof(int), f);
fread(&h, 1, sizeof(int), f);
fseek(f, 54, SEEK_SET);
int NumPixels = w * h;
for(int i = 0; i < NumPixels; i++){
ABGRStruct Pixel;
fread(&Pixel, 1, 4, f);
// do something with alpha
}
fclose(f);
}
HB_FUNC( ABPAINT )
{
#ifdef _WIN64
HDC hDC = ( HDC ) hb_parnll( 1 );
#else
HDC hDC = ( HDC ) hb_parnl( 1 );
#endif
HDC hDCComp = CreateCompatibleDC( hDC );
BITMAP bm;
HGDIOBJ hOldBmp = SelectObject( hDCComp, ( HBITMAP ) fw_parH( 4 ) );
BLENDFUNCTION blend;
int wDest, hDest;
blend.BlendOp = AC_SRC_OVER;
blend.BlendFlags = 0;
blend.SourceConstantAlpha = IF( hb_parnl( 5 ) != 0, hb_parnl( 5 ), 220 );
blend.AlphaFormat = AC_SRC_ALPHA;
#ifdef _WIN64
GetObject( ( HBITMAP ) hb_parnll( 4 ), sizeof( BITMAP ), ( LPSTR ) &bm );
#else
GetObject( ( HBITMAP ) hb_parnl( 4 ), sizeof( BITMAP ), ( LPSTR ) &bm );
#endif
wDest = bm.bmWidth;
hDest = bm.bmHeight;
if( hb_pcount() > 5 )
{
wDest = hb_parni( 6 );
hDest = hb_parni( 7 );
}
hb_retl( AlphaBlend( hDC, hb_parnl( 2 ), hb_parnl( 3 ), wDest, hDest, hDCComp,
0, 0, bm.bmWidth, bm.bmHeight, blend ) );
SelectObject( hDCComp, hOldBmp );
DeleteDC( hDCComp );
}
Return to Bugs report & fixes / Informe de errores y arreglos
Users browsing this forum: No registered users and 9 guests