Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Bitmap verfügt über vier grundlegende Headertypen:
Die vier Typen von Bitmapheadern werden durch den Member Size unterschieden, bei dem es sich um das erste DWORD-Element in den einzelnen Strukturen handelt.
Die BITMAPV5HEADER-Struktur ist eine erweiterte BITMAPV4HEADER-Struktur, die eine erweiterte BITMAPINFOHEADER-Struktur ist. Allerdings haben BITMAPINFOHEADER und BITMAPCOREHEADER nur den Member Size mit anderen Bitmap-Headerstrukturen gemeinsam.
Die Formate BITMAPCOREHEADER und BITMAPV4HEADER wurden durch die Formate BITMAPINFOHEADER bzw. BITMAPV5HEADER ersetzt. Die Formate BITMAPCOREHEADER und BITMAPV4HEADER werden der Vollständigkeit halber und aus Gründen der Abwärtskompatibilität aufgeführt.
Das Format für eine DIB lautet wie folgt (weitere Informationen finden Sie unter Bitmapspeicher):
- eine BITMAPFILEHEADER-Struktur
- entweder eine BITMAPCOREHEADER-, eine BITMAPINFOHEADER-, eine BITMAPV4HEADER- oder eine BITMAPV5HEADERStruktur.
- eine optionale Farbtabelle, die entweder eine Gruppe von RGBQUAD-Strukturen oder eine Gruppe von RGBTRIPLE-Strukturen ist.
- die Bitmapdaten
- optionale Profildaten
In einer Farbtabelle wird beschrieben, wie Pixelwerte RGB-Farbwerten entsprechen. RGB ist ein Modell zur Beschreibung von Farben, die durch Lichtemission entstehen.
Profildaten bezieht sich entweder auf den Namen der Profildatei (verknüpftes Profil) oder auf die eigentlichen Profilbits (eingebettetes Profil). Im Dateiformat werden die Profildaten am Ende der Datei platziert. Die Profildaten werden direkt nach der Farbtabelle (sofern vorhanden) platziert. Wenn die Funktion jedoch eine verpackte DIB empfängt, kommen die Profildaten nach den Bitmapbits, wie im Dateiformat.
Profildaten sind nur für BITMAPV5HEADER-Strukturen vorhanden, bei denen bV5CSType „PROFILE_LINKED“ oder „PROFILE_EMBEDDED“ ist. Bei Funktionen, die verpackte DIBs empfangen, werden die Profildaten nach den Bitmapdaten angezeigt.
Ein palettiertes Gerät ist ein Gerät, das Paletten zur Farbzuweisung verwendet. Das klassische Beispiel für ein palettiertes Gerät ist ein Bildschirm mit 8-Bit-Farbtiefe (d. h. 256 Farben). Der Bildschirm verwendet in diesem Modus eine kleine Farbtabelle, um einer Bitmap Farben zuzuweisen. Die Farben in einer Bitmap werden der Farbe in der Palette zugewiesen, die der Farbe in der Bitmap am nächsten kommt. Das palettierte Gerät erstellt keine optimale Palette für die Anzeige der Bitmap, sondern verwendet einfach die Farben der aktuellen Palette. Anwendungen sind für die Erstellung einer Palette und deren Auswahl im System verantwortlich. Im Allgemeinen enthalten Bitmaps mit 16, 24 und 32 Bit pro Pixel (bpp) keine Farbtabellen (auch bekannt als optimale Paletten für die Bitmap). In diesem Fall ist die Anwendung für die Erstellung einer optimalen Palette verantwortlich. Bitmaps mit 16, 24 und 32 bpp können jedoch solche optimalen Farbtabellen für die Anzeige auf palettierten Geräten enthalten. In diesem Fall muss die Anwendung lediglich eine Palette auf der Grundlage der in der Bitmap-Datei enthaltenen Farbtabelle erstellen.
Bitmaps mit 1, 4 oder 8 bpp müssen eine Farbtabelle mit einer maximalen Größe haben, die auf den bpp basiert. Die maximale Größe für Bitmaps mit 1, 4 und 8 bpp ist 2 hoch bpp. Eine Bitmap mit 1 bpp hat also maximal zwei Farben, eine Bitmap mit 4 bpp maximal 16 Farben und eine Bitmap mit 8 bpp maximal 256 Farben.
Bitmaps mit 16, 24 oder 32 bpp benötigen keine Farbtabellen, können aber darüber verfügen, um Farben für palettierte Geräte festzulegen. Wenn eine Farbtabelle für eine Bitmap mit 16, 24 oder 32 bpp vorhanden ist, gibt der Member biClrUsed die Größe der Farbtabelle an, und die Farbtabelle muss so viele Farben enthalten. Wenn biClrUsed null ist, gibt es keine Farbtabelle.
Die Rot-, Grün- und Blau-Bitfeldmasken für BI_BITFIELD-Bitmaps folgen unmittelbar auf die Strukturen BITMAPINFOHEADER, BITMAPV4HEADER und BITMAPV5HEADER. Die Strukturen BITMAPV4HEADER und BITMAPV5HEADER enthalten zusätzliche Elemente für die Rot-, Grün- und Blau-Masken wie folgt.
Member | Bedeutung |
---|---|
RedMask | Farbmaske, die den Rotanteil jedes Pixels angibt. Gilt nur, wenn der Member Compression auf „BI_BITFIELDS“ gesetzt ist. |
GreenMask | Farbmaske, die den Grünanteil jedes Pixels angibt. Gilt nur, wenn der Member Compression auf „BI_BITFIELDS“ gesetzt ist. |
BlueMask | Farbmaske, die den Blauanteil jedes Pixels angibt. Gilt nur, wenn der Member Compression auf „BI_BITFIELDS“ gesetzt ist. |
Wenn der Member biCompression von BITMAPINFOHEADER auf „BI_BITFIELDS“ gesetzt ist und die Funktion ein Argument vom Typ LPBITMAPINFO erhält, folgen die Farbmasken unmittelbar auf den Header. Die Farbtabelle, sofern vorhanden, folgt auf die Farbmasken. BitmapCOREHEADER-Bitmaps unterstützen keine Farbmasken.
Standardmäßig sind Bitmapdaten in ihrem Format von unten nach oben aufgebaut. Von unten nach oben bedeutet, dass die erste Scanlinie in den Bitmapdaten die letzte Scanlinie ist, die angezeigt wird. Beispielsweise ist das 0. Pixel der 0. Scanlinie der Bitmapdaten einer 10 × 10 Pixel großen Bitmap das 0. Pixel der 9. Scanlinie des angezeigten oder gedruckten Bilds. Bitmaps im RLE-Format (Run-Length Encoded) und BITMAPCOREHEADER-Bitmaps können keine von unten nach oben aufgebauten Bitmaps sein. Die Scanlinien sind an DWORD ausgerichtet, mit Ausnahme von RLE-komprimierten Bitmaps. Sie müssen mit Bytes aufgefüllt werden, wenn die Scanlinienbreite nicht durch vier teilbar ist, mit Ausnahme von RLE-komprimierten Bitmaps. Beispiel: Eine Bitmap mit 24 bpp mit einer Größe von 10 × 10 Pixel hat zwei Füllbytes am Ende jeder Scanlinie.