ビットマップの取り扱いはじめてです。
BITMAPファイル 1280×1024 0-255諧調 モノクロのピクセルデータを
読み、諧調の変更後にBITMAPファイルに0-255諧調 モノクロで書き込みたいの
ですが、確認すると変更時の画像になりません。
以下の内容書き込みしてます。
//カラーテーブルを取得。
hDC = GetDC(hwnd);
GetSystemPaletteEntries(hDC, 0, 256, pe);
for (int i = 0; i < 256; i++) {
lpInfo->bmiColors[i].rgbRed = pe[i].peRed;
lpInfo->bmiColors[i].rgbGreen =pe[i].peGreen;
lpInfo->bmiColors[i].rgbBlue =pe[i].peBlue;
lpInfo->bmiColors[i].rgbReserved = 0;
}
/* ビットマップのヘッダ作成 */
lpHead->bfType='M'*256+'B';
lpHead->bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)
+dwLength*dwHeight;
lpHead->bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)
+4*256;
lpInfo->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
lpInfo->bmiHeader.biWidth=dwWidth;
lpInfo->bmiHeader.biHeight=dwHeight;
lpInfo->bmiHeader.biPlanes=1;
lpInfo->bmiHeader.biBitCount=8;
> 確認すると変更時の画像になりません。
で、どうなってんですか?
> GetSystemPaletteEntries(hDC, 0, 256, pe);
モノクロ(というか、階調を持つんだからグレースケールって言うべきだろうけど)な
のに、なんでシステムパレット使ってるんです?
256階調のグレースケールと言うのは結局の話、グレースケールのパレットを持った
256色のビットマップと言う事です。
別に白黒2値と言う訳ではないので、256カラーのビットマップと別段変わるわけでも
ありません。単純な話で行けば、元のビットマップのパレットをグレースケール化するだ
けでも行けそうな気がします。
試していないので御自分で確認して見てください。