Joaquín,
La forma más rápida de hacerlo es usar la función de Windows BitBlt()
1. Creas un bitmap monocromo
HBITMAP hBmpMono = CreateBitmap( 100, 100, 1, 1, NULL );
2. Creas un hDC para usarlo con ese bitmap monocromo:
HDC hDcMono = CreateCompatibleDC( NULL );
3. Seleccionas ese bitmap monocromo en ese hDcMono y guardamos su "imagen" anterior:
HBITMAP hbmPrev = SelectBitmap( hDcMono, hBmpMono );
4. Lees el bitmap desde disco:
hBitmapColor = ReadBitmap( 0, cFileName )
5. Creas un hDC para usarlo con el bitmap de color:
HDC hDcColor = CreateCompatibleDC( NULL );
6. Copias el bitmap de color al bitmap monocromo:
BitBlt( hDcMono, 0, 0, 100, 100, hDcColor, 0, 0, SRCCOPY );
7. Salvas el bitmap monocromo a disco. Esté método de la Clase TWindow es lo que necesitas:
- Code: Select all Expand view RUN
METHOD SaveToBmp( cBmpFile ) CLASS TWindow
local hBmp := WndBitmap( ::hWnd )
local hDib := DibFromBitmap( hBmp )
DibWrite( cBmpFile, hDib )
GloBalFree( hDib )
DeleteObject( hBmp )
return ( File( cBmpFile ) )