アイコンのファイルフォーマットについて

解決


mammal  URL  2004-08-19 16:10:03  No: 85166  IP: [192.*.*.*]

アイコンエディタを自作したのです。
自分でファイルフォーマットも調べて。

モノは試しと、適当に描いて保存してみたのですが、
32 * 32ピクセルはうまく保存できたのですが、
同じルーチンで16 * 16ピクセルを保存すると、
デスクトップで画像が表示されません。

自分で作った16 * 16アイコンと、正常なアイコンを
ダンプして比べてみたところ、正常なアイコンでは、
データの最後にビット1がいくらか並んでいました。
つまり、正常なアイコンではファイルサイズがいくらか大きくなっているのです。

自分で調べた限りでは、この最後の&HFFの羅列について、
記述のある資料が見つかりませんでした。

どなたか、これがどういう意味のあるデータで、
いくつ並べればよいものか、ご存知ではないでしょうか。

ご教示願います。

編集 削除
りっとっと  2004-08-19 18:27:19  No: 85167  IP: [192.*.*.*]

それはマスクデータです。このマスクデータを下に背景を透過します。
マスクデータはモノクロビットマップ形式となっており、1バイトに
8ピクセル文のデータが入ります。もちろんこのマスクデータにも
4の倍数にしないといけないというルールが適用されます。
マスクデータが含まれている場合は
BITMAPINFOHEADERのbiHeightを高さの2倍の値を設定しなければなりません。

編集 削除
mammal  2004-08-20 16:14:45  No: 85168  IP: [192.*.*.*]

えと、それは、ANDマスクの下にというつもりだったのですが。
XORマスクとANDマスクのさらに下に変なものがあると・・・。
あれ、ここでバイトの数え方を間違っていたら大変だぁ・・・。

家に帰ってから調べてみます・・・。

編集 削除
mammal  2004-08-23 16:26:05  No: 85169  IP: [192.*.*.*]

調べた結果。
1ビットビットマップのバイト数が合いません。
16 * 16の場合、16 * 16 / 8 = 32バイト必要な筈ですが、
実際には64バイト使うようです。
32 * 32ピクセルの場合には同じ計算でうまくいくのですが。
どうしてなんでしょうねぇ・・・。

編集 削除
こてこて  2004-08-23 19:13:31  No: 85170  IP: [192.*.*.*]

1行データは、4バイトの整数倍でっせ。

編集 削除
mammal  2004-08-23 19:44:27  No: 85171  IP: [192.*.*.*]

あ、4の倍数って、そういう意味ですか。
仕様書に文句を言う前に早速試して見ます・・・。

編集 削除
mammal  2004-08-25 13:43:01  No: 85172  IP: [192.*.*.*]

何とか動きました。
ありがとうございました。

編集 削除
mammal  2004-08-25 14:30:36  No: 85173  IP: [192.*.*.*]

忘れてました

編集 削除