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);
    }
    

Anmelden zum Antworten