アイコンエディタを自作したのです。
自分でファイルフォーマットも調べて。
モノは試しと、適当に描いて保存してみたのですが、
32 * 32ピクセルはうまく保存できたのですが、
同じルーチンで16 * 16ピクセルを保存すると、
デスクトップで画像が表示されません。
自分で作った16 * 16アイコンと、正常なアイコンを
ダンプして比べてみたところ、正常なアイコンでは、
データの最後にビット1がいくらか並んでいました。
つまり、正常なアイコンではファイルサイズがいくらか大きくなっているのです。
自分で調べた限りでは、この最後の&HFFの羅列について、
記述のある資料が見つかりませんでした。
どなたか、これがどういう意味のあるデータで、
いくつ並べればよいものか、ご存知ではないでしょうか。
ご教示願います。
それはマスクデータです。このマスクデータを下に背景を透過します。
マスクデータはモノクロビットマップ形式となっており、1バイトに
8ピクセル文のデータが入ります。もちろんこのマスクデータにも
4の倍数にしないといけないというルールが適用されます。
マスクデータが含まれている場合は
BITMAPINFOHEADERのbiHeightを高さの2倍の値を設定しなければなりません。
えと、それは、ANDマスクの下にというつもりだったのですが。
XORマスクとANDマスクのさらに下に変なものがあると・・・。
あれ、ここでバイトの数え方を間違っていたら大変だぁ・・・。
家に帰ってから調べてみます・・・。
調べた結果。
1ビットビットマップのバイト数が合いません。
16 * 16の場合、16 * 16 / 8 = 32バイト必要な筈ですが、
実際には64バイト使うようです。
32 * 32ピクセルの場合には同じ計算でうまくいくのですが。
どうしてなんでしょうねぇ・・・。
1行データは、4バイトの整数倍でっせ。
あ、4の倍数って、そういう意味ですか。
仕様書に文句を言う前に早速試して見ます・・・。
何とか動きました。
ありがとうございました。
忘れてました
ツイート | ![]() |