Nochmal Falschfarben
-
Wie füllt man eine Palette für die Falschfarbendarstellung eines Graustufenbitmaps?
-
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); }