S
Danke allen fürs mitdenken
Ich hab eine brauchbare Lösung gefunden - und das sogar teilweise in meinem eigenen Code.
Ich mache es über ein zwischenspeichern - das flutscht hervorragend.
Hier die beiden kleinen Funktionen:
void SaveBitmap( CBitmap *pBitmap, CString name )
{
CImage image;
image.Attach( *pBitmap );
if(name.Right(4).MakeLower() == L".png")
image.Save( name, Gdiplus::ImageFormatPNG );
else
image.Save( name, Gdiplus::ImageFormatBMP );
image.Detach();
image.Destroy();
}
CBitmap *LoadMonochromeBitmap( CString name )
{
// use GDI LoadImage to load bitmap from the temp file;
// the trick is the API function automatically creates 1bpp bitmap
HBITMAP hBitmap = (HBITMAP)LoadImage( NULL, (LPCTSTR)name, 0, 0, 0, (LR_LOADFROMFILE | LR_MONOCHROME) );
CBitmap *pBitmap = new CBitmap();
pBitmap->Attach( hBitmap );
return pBitmap;
}