Bitmapgröße



  • Hallo,

    ich zeichne in einer überdimensonalen CBitmap (32767 x 480).
    Jetzt wird diese natürlich richtig groß..

    So stellen Sie die Größe einer nicht komprimierten Bitmap fest:

    Multiplizieren Sie die horizontale Ausdehnung (in Pixel) mit der vertikalen Ausdehnung (in Pixel), um die Gesamtzahl Pixel zu erhalten. Dementsprechend hat eine Bitmap von 640 x 480 genau 307.200 Pixel.
    Multiplizieren Sie die Gesamtzahl Pixel mit der Anzahl Bytes pro Pixel:
    1-Bit-Bilder (8 Farben) haben 1/8 Byte pro Pixel (x 0.125)
    4-Bit-Bilder (16 Farben) haben 1/2 Byte pro Pixel (x 0.5)
    8-Bit-Bilder (256 Farben oder Graustufen) haben 1 Byte pro Pixel (x 1)
    24-Bit-Bilder haben 3 Bytes pro Pixel (x 3)
    32-Bit-Bilder haben 4 Bytes pro Pixel (x 4)

    Mir wäre schon geholfen, wenn ich die Farbtiefe runtersetzen könnte.

    Doch wie geht das? Ich hoffe Ihr könnt mir helfen,
    Merci



  • Ok, hab's gefunden:

    Bitmap = new CBitmap;
    
       BITMAPINFOHEADER bmpih;
       bmpih.biSize=sizeof(BITMAPINFOHEADER);
    
       bmpih.biWidth=32767;  // Breite des Bitmaps
       bmpih.biHeight=480;   // Höhe des Bitmaps
       bmpih.biPlanes=1;
       bmpih.biBitCount=8;
       bmpih.biCompression=BI_RGB;
       bmpih.biSizeImage=0;
       bmpih.biXPelsPerMeter=0;
       bmpih.biYPelsPerMeter=0;
       bmpih.biClrUsed=0;
       bmpih.biClrImportant=0;
    
       BITMAPINFO bmpi;
       bmpi.bmiHeader=bmpih;
    
       RGBQUAD* pFarben;
    
       HBITMAP hbmp;
       hbmp = CreateDIBSection((HDC)pDC, &bmpi, DIB_RGB_COLORS,(void **)&pFarben,NULL,NULL);
    
       Bitmap->Attach( hbmp);
    

Anmelden zum Antworten