Erst der
CURHEADER = 6 Byte bei Icons
ICOHEADER = 6 Byte.
Dann
CURSORDIRENTRY = 16 Byte bei Icons
ICONDIRENTRY = 16 Byte.
Bei beiden kommt dann der
BITMAPINFOHEADER = 40 Byte.
Dann bei beiden die Farbtabelle, wenn vorhanden.
Und dann das
XOR-Bild und danach das
AND-Bild.
Die Größe des
XOR Bild ist abhängig vom
BitCount im
BITMAPINFOHEADER.
Das bedeutet, daß bei 16 u. 256 Farben nicht die Farbe selbst in den
Bilddaten gespeichert werden, sondern ein Verweis auf die Stelle in der
Farbtabelle wo die Farbe mit einen DWORD = 4 Byte beschrieben wird.
Bei BitCount = 4 = 16 Farben ist die Größe der Farbtabelle = 64 Byte.
Ein
Xor-Bild wäre dann bei 32 * 32 Pixel * 4 Bit = 512 Byte.
Ganz Klar 4 Bit für jede Farbe, da man mit 4 Bit die Zahlen 0 bis 15 in
Hexadezimal 0 bis F darstellen kann.
Beispiel: das erste Byte hat den Wert in Hex
0F das bedeutet, die
0 verweist auf
die erste Farbe in der Farbtabelle und das
F auf die letzte
Farbe in der Farbtabelle, also 1 auf das Zweite, 2 auf das Dritte usw.
Das Gleiche gilt für 256 Farben,
BitCount = 8, Farbtabelle = 1024 Byte.
Nur das halt 8 Bit = 1 Byte für den Verweis auf die Stelle in der
Farbtabelle verwendet wird. Da mit 1 Byte = 256 Zahlen ausgegeben werden können
In Hex = FF.
Die Bildgröße ist dann = 1024 Byte, 32 * 32 Byte = 1024 Byte.
Zu beachten ist, daß bei 16 Farben die Farben vorgeschrieben sind.
Es müssen genau diese 16 Farben(Systemfarben) sein und keine anderen.
Zum Glück ist das bei 256 Farben nicht so.
Beim
AND-Bild das immer 128 Byte ist, für 32 * 32 Pixel Icons oder Cursor.
Ganz klar 4 Byte = 32 Bit das mal 32 = 128 Byte.
Ist für jedes Pixel, das transparent dargestellt wird, ein Bit auf 1
gesetzt, und für jede andere Farbe auf 0 gesetzt.
Es ist zu beachten, daß beide Bilder XOR u. AND Bild Geometrisch dargestellt
werden. Das bedeutet nicht von links oben sondern von links unten.
Vereinfachtes Beispiel von einem Großen
F: