名称 | サイズ | ||
ファイルヘッダ | IconFileHeader | 6バイト | |
アイコンNO.1 | アイコンヘッダ | IconInfoHeader | 16バイト |
アイコンNO.2 | アイコンヘッダ | IconInfoHeader | 16バイト |
・ ・ ・ |
|||
アイコンNO.1 | 情報ヘッダ | BitmapInfoHeader | 40バイト |
パレット | 可変長 | ||
画像データ | ピクセルデータ | 可変長 | |
マスクデータ | 可変長 | ||
アイコンNO.2 | 情報ヘッダ | BitmapInfoHeader | 40バイト |
パレット | 可変長 | ||
画像データ | ピクセルデータ | 可変長 | |
マスクデータ | 可変長 | ||
・ ・ ・ |
アドレス (サイズ) | 名称 | 内容 |
0x0000 (2) | icoReserved | 予約 常に0 |
0x0002 (2) | icoResourceType | リソースタイプ 1 - アイコン 2 - カーソル |
0x0004 (2) | icoResourceCount | アイコンの数 |
アドレス (サイズ) | 名称 | 内容 |
0x0006 (1) | Width | アイコンの幅 (0の場合は256ピクセル) |
0x0007 (1) | Height | アイコンの高さ (0の場合は256ピクセル) |
0x0008 (1) | ColorCount | カラー数 (256色以上なら0) |
0x0009 (1) | Reserved1 | 予約 |
0x000A (2) | Reserved2 | 予約 (ホットスポットx座標) |
0x000C (2) | Reserved3 | 予約 (ホットスポットy座標) |
0x000E (4) | icoDIBSize | アイコンファイルのサイズ |
0x0012 (4) | icoDIBOffset | BitmapInfoHeaderまでのバイト数 |
アドレス (サイズ) | 名称 | 内容 |
0x0016 (4) | bcSize | ヘッダサイズ (=40) ※ここが、40でない時はPNGファイルの可能性がある |
0x001A (4) | bcWidth | 画像の幅 (ピクセル) |
0x001E (4) | bcHeight | 画像の高さ (ピクセル) bcHeight の値が正数なら,画像データは下から上へ bcHeight の値が負数なら,画像データは上から下へ |
0x0022 (2) | bcPlanes | プレーン数 常に 1 |
0x0024 (2) | bcbcBitCount | 1画素あたりのデータサイズ (bit) 例)256 色ビットマップ = 8 |
0x0026 (4) | biCopmression | 圧縮形式 0 - BI_RGB (無圧縮) 1 - BI_RLE8 (RunLength 8 bits/pixel) 2 - BI_RLE4 (RunLength 4 bits/pixel) 3 - BI_BITFIELDS (Bitfields) (4 - BI_JPEG) (5 - BI_PNG) |
0x002A (4) | biSizeImage | 画像データ部のサイズ (byte) 96dpi ならば3780 0 の場合もある |
0x002E (4) | biXPixPerMeter | 横方向解像度 (1mあたりの画素数) 96dpi ならば3780 0 の場合もある |
0x0032 (4) | biYPixPerMeter | 縦方向解像度 (1mあたりの画素数) 96dpi ならば3780 0 の場合もある |
0x0036 (4) | biClrUsed | 格納されているパレット数 (使用色数) 0 の場合もある |
0x003A (4) | biCirImportant | 重要なパレットのインデックス 0 の場合もある |
bcBitCount の値が 8〜1 の場合に存在する。
サイズ | RGBQUAD (4) | 内容 |
1 | rgbBlue | 青 0 〜 255 |
1 | rgbGreen | 緑 0 〜 255 |
1 | rgbRed | 赤 0 〜 255 |
1 | rgbReserved | 予約領域 0 |
ピクセルデータ(XORイメージ)
- 画像データは左下から右上に向かって記録されている。
(Height の値が負数ならば左上から右下に向かって記録される。)
- 画像の横のラインのデータは,4 の倍数に揃えなければいけない。
(詳しくはBMPフォーマットを参照。)
マスクデータ(ANDイメージ)
- 0 = 通常、1 = 透過 という情報を 1bitづつ書き込んでいく。
- ピクセルデータ同様、横のラインのデータを4 の倍数に揃える。