R
void Draw( CDC* pDC)
{
// 1. Man lädt ein Device-Independent-Bitmap
CBitmap bmp;
bmp.Attach( (HBITMAP)LoadImage( NULL, _T("b001.bmp"), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE|LR_LOADFROMFILE|LR_CREATEDIBSECTION));
// 2. Man selektiert es in einen temporären DC
CDC dcBmp; dcBmp.CreateCompatibleDC( pDC);
CBitmap* pBmpOld = dcBmp.SelectObject( &bmp);
// 3. Man erstellt eine neue Palette (Achtung: Das Bitmap muss indiziert sein)
RGBQUAD rgbq[256];
for( BYTE i=0; i<256; i++)
{
rgbq[i].rgbBlue = rgbq[i].rgbGreen = rgbq[i].rgbRed = 255-i;
rgbq[i].rgbReserved = 0;
}
// 4. Man selektiert diese für das Bitmap
SetDIBColorTable( dcTemp, 0, 256, rgbq);
// 5. Grösse des Bmps
CSize size = bmp.GetBitmapDimension();
// 6. Man lässt das GDI zeichnen
pDC->BitBlt( 0, 0, size.cx, size.cy, dcTmp, 0, 0, SRCCOPY);
// 7. Altes Bitmap selektieren
dcTmp.SelectObject( pBmpOld);
}