ついに、というか、ようやく正しく保存することが出来ました。(^^;
長かったよう。。え〜ん。え〜ん。
ちなみに、バグの原因としては、ウインドウバッファからグラフィックスデータを吸い出すときに、32ビットデータを吸い出さないと行けないのに、8ビットデータしか吸い出してなかったという。。。orz
てっきり、並び方が間違っているとばかり思っていた私って一体。。(^^;;
今まで、PNGへ保存するときは、8bppか、24bppしか対応してなかったんですね。
今回、32bppも対応する必要性にせまられ、バグが露見したというわけです。(^^;
typedef unsigned char byte; typedef unsigned long XID; ColTyp c; byte *P; int bitpix = surface->format->BitsPerPixel; P = (unsigned char *)surface->pixels + (y * surface->pitch +x * bitpix/8 ); switch( bitpix) { case 8: c.ct_byte[0] = *P; break; case 16: c.ct_byte[0] = *(P+1); c.ct_byte[1] = *P; break; case 24: c.ct_byte[0] = *(P+2); c.ct_byte[1] = *(P+1); c.ct_byte[2] = *P; break; case 32: c.ct_xid = (XID)*P; break; } return( c ); }
さて、問題です。上記のソースリストの、case 32: の後の式を、正しく直してください。(汗)
正解したら。。。。某ワークステーションを、35万円の適正価格で、買うことのできる権利を差し上げます。:-)