掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
単色のビットマップファイルを16色に変更するためには (ID:69446)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
面倒だから実際に動くか確認しないで回答する。 間違っているかもしれない。 そういえばビットマップって上下逆さになっているんだよな。 面倒なので上下逆さにしてません。 int putPixel(BITMAPINFOHEADER const * pInfo, BYTE * pFigureBuff, int x, int y, int colorIndex) { int HorizonBytes; BYTE * pData; /* エラーチェック */ if(pInfo == NULL) return -1; if(x < 0 || x >= pInfo->biWidth) return -1; if(略) return -1; if(colorIndex< 0 || colorIndex>= 16) return -1; if(pInfo->biBitCount != 4) return -1; if(略) return -1; HorizonBytes = 略 pData = pFigureBuff + HorizonBytes * y + x/2; インデント面倒だな x/2は、1バイトに2ピクセルだから。 if(x&1) { xが奇数ならpDataの下位4ビットをかき変える 上位4ビットは元の値のまま *pData = (*pData & 0xf0) | colorIndex; } else { *pData = (*pData & 0x0f) | (colorIndex << 4); } return 0; } pInfo->biBitCountの値を見て1bppと4bppの両方に対応すればいいね。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.