掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
単色のビットマップファイルを16色に変更するためには (ID:69441)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>構造体じゃなくて*(int *)(buff+28)とか変なやり方するの? >28であっているかとか俺は調べないよ。 →構造体を使えるように調べてみます。 >XmaxRangeと(YmaxRange)か意味分かんないし。 →作成するビットマップの外枠のサイズで、固定で"195"が入ります。 >1ピクセル1ビットだったのが1ピクセル4ビットになるので >ビットマップのバイト数も変わるはず。 >ビットマップは横1行が4バイトの倍数になるように右に0〜3バイトの余分を追加する。 *(long *)(buff+18)=(long)XmaxRange+1L; →*(long *)(buff+18)=((long)XmaxRange+1L)*4+3; 1Lの L はどんな使われかたですか? >> buff[54]=0x00; /* 0:黒 */ >こういうのは >buff[sizeof(BITMAPFILEHEADER)+〜]= >こういう感じにした方がいい。 →buff[sizeof(BITMAPFILEHEADER)+1]=0x00; こんな感じになるのですか? >>#define BF_OFF_BITS (54+4*2) >16色に変更した? →#define BF_OFF_BITS (54+4*16) >>HorizonBytes=((((xdot+7)>>3)+3)/4)*4; >4bppに変更した? xdot=194なので 194+7=201 201は2進数で11001001になって、3ビットシフトして 00011001を10進数に戻すと25 HorizonBytes=28になるのですが、3ビットシフト意味はどんな感じなのですか? >>(3) *(FigureBuff+py*HorizonBytes+(px>>3))|=(0x80>>(px&0x07)); >1bit/pixelのときの処理だね。 >1バイトで8ピクセルを表現できるから >そのまま書き変えると隣の7ピクセルも書き変えてしまうので。 >1bit/pixelでは問題ないのかもしれないが >4bits/pixelだと変えないとだな。 >|つまりORだから0を1に変えることはできても1を0に変えることはできないので。 >でも元画像が透けて見えるような効果があるからあえてその方がいい場合もある。 →ここのORはどのビットとどのビットのになるのでしょう。 >やたらと引数が増えて困るとか言うなら >構造体にしてそのポインタを引数で渡せばいいことだし。 →どのように記述したらよいのでしょう? 分からないことばかりで、質問ばかりですが どうぞ宜しくお願いいたします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.