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

解決


mammal  URL  2004-08-20 01:10:03  No: 85166

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

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

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

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

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

ご教示願います。


りっとっと  2004-08-20 03:27:19  No: 85167

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


mammal  2004-08-21 01:14:45  No: 85168

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

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


mammal  2004-08-24 01:26:05  No: 85169

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


こてこて  2004-08-24 04:13:31  No: 85170

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


mammal  2004-08-24 04:44:27  No: 85171

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


mammal  2004-08-25 22:43:01  No: 85172

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


mammal  2004-08-25 23:30:36  No: 85173

忘れてました


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加