こんばんは, I.Tak.です。[osask 7185]に返信です。 Akira Ouchi wrote: > 現在、PICTURE0でicoファイルを読み込めるようにしているのですが、最後 > のデコードでアイコンが崩れてしまいます。bufの書き方に問題があるんだと > 思いますが、どう問題なのかさっぱりわかりません…(^^; 1ピクセルあたりのバイト数を (b_type & 7) バイトにして出力しないと崩れて しまいます (7じゃないかも知れません)。picture0.binをそのままビューワ として使うと4バイトモードが使われますが……ico.cから引用: > col = 0xC6C6C6; > if ((dmask & mask[0]) == 0) > col = pal[e]; > buf[y * px + x] = col; UCHAR *buf で宣言されてるので, 1ピクセルあたり1バイトですね。 崩れるわけです。それで, 例えば4バイトモードで出力するなら, int pixel_size = b_type & 7; /* 略 */ int *line = (int*)&buf[y * (px * pixel_size + skip)]; /* 略 */ line[x] = col; こんな感じです。 あと, static変数は使えません。もし今のままDLLとして使うと, 呼び出し元の メモリを破壊する危険があります。というか破壊します。 アイコンの大きさなどはdecodeが呼ばれるたびにヘッダを読んで取得してください。 フルカラー(b_type=4)さえできてしまえば減色ルーチンが使えますが ……誤差拡散ルーチンの説明はどこにも書いてませんでしたか(^^; 使います? I.Tak. <t40370@mail.ecc.u-tokyo.ac.jp>