C++ Builder Snippets  

Bitmap-Palette in Graustufen konvertieren:
 
//-----------------------------------------------------------------
// Funktion BitmapToGreyScale() konvertiert ein farbiges 
// Bild im übegebenen TBitmap-Objekt in ein Graustufen-Bitmap 
//-----------------------------------------------------------------
void BitmapToGreyScale(Graphics::TBitmap *pBitmap)
{
  LOGPALETTE* plLogPal = NULL;
  int ilPaletteSize = 0;  //  Grösse des Buffers für die LOGPALETTE-Struktur
  pBitmap->PixelFormat = pf8bit;
  try
  {
    // Speicherbedarf für die Palette berechnen und Speicher reservieren:
    ilPaletteSize = sizeof(LOGPALETTE) + (sizeof(PALETTEENTRY) * 255);
    plLogPal = (LOGPALETTE*) malloc(ilPaletteSize);

    if(plLogPal != NULL)
    {
      // Palette initialisieren:
      plLogPal->palVersion = 0x300;
      plLogPal->palNumEntries = 256;

      // Farben in der Palette mit Graustufen-Werten initialisieren:
      for (int ilColorIndex = 0; ilColorIndex <= 255; ilColorIndex++)
      {
        plLogPal->palPalEntry[ilColorIndex].peRed = ilColorIndex;
        plLogPal->palPalEntry[ilColorIndex].peGreen = ilColorIndex;
        plLogPal->palPalEntry[ilColorIndex].peBlue = ilColorIndex;
        plLogPal->palPalEntry[ilColorIndex].peFlags = PC_NOCOLLAPSE;
      }

      // Palette erzeugen und zuweisen:
      HPALETTE hLogPal = CreatePalette(plLogPal);
      if (hLogPal) pBitmap->Palette = hLogPal;

      // Speicher wieder freigeben:
      free(plLogPal); plLogPal = NULL;
    }
  }
  catch ( ... ) { ;  }
}

  Download BCB5
Projekt-Quellcode
Download
Demo-Exe

© '99-2001 by S. Kreutzmann