環境はVC6 Win32コンソールアプリ MFC対応です。
下記変数の値0,1でビットマップ白、黒表示をしたい。
unsigned long gDrawBuff[MAX_DRAW_BUFF_Y_SZ][MAX_DRAW_BUFF_X_SZ];
MAX_DRAW_BUFF_Y_SZ:2 Y座標
MAX_DRAW_BUFF_X_SZ:2 X座標
左上が0,0としたときにgDrawBuff[0][0]=0x8000000のときに
(0,0)だけ黒となるようにしたい
(Y=2, X=64のビットマップ)
下記、ソースで試すと毎回ビットマップデータが違います。
(作成したビットマップをペイント800%表示して確認)
設定に間違いがあるのでしょうか?
ご教授下さい。
すみませんがソースを貼り付けると
”スパムキーワードが含まれています。”となるので
分割して載せます。
ソースが貼り付けられません。
省略すると、
BITMAPINFOHEADER構造体と
BITMAPFILEHEADER構造体と
RGBQUAD構造体を指定してあげて。
その順にCFILEでライトしています。
説明部分がよくわかりません。
コードもないし、gDrawBuffと生成されるべきビットマップの対応関係がわかりません。
>ソースで試すと毎回ビットマップデータが違います。
とありますが、同じ出力が得られる条件で実行していますか?
ビットマップのサイズを変えたりしていませんか。
毎回どのように異なるのかを記述すれば何らかのヒントが挙がるかもしれません。
>BITMAPINFOHEADER構造体と
>BITMAPFILEHEADER構造体と
>RGBQUAD構造体を指定してあげて。
>その順にCFILEでライトしています。
パレットまでしかない?データ部はきちんと出力していますか?
とりあえず作成したビットマップファイルをバイナリで見て何が違うのかを確かめてみ
てはいかがでしょう。
※4バイトアラインメントを忘れてるとかありがちですけど。。
拡散的ですが気になることを挙げてみました。
わかりづらくて申し訳ありません。
質問を変えます。
X(64),Y(2)の白黒のビットマップを作成するための
BITMAPINFOHEADER構造体とBITMAPFILEHEADER構造体
に対しての設定方法がわかっていません。
おそらく、サイズの設定等が間違っていると思われます。
また、
>>BITMAPINFOHEADER構造体と
>>BITMAPFILEHEADER構造体と
>>RGBQUAD構造体を指定してあげて。
>>その順にCFILEでライトしています。
>パレットまでしかない?データ部はきちんと出力していますか?
データ部は出力しています。
記述忘れです。
(1)このデータ部の配列は何バイトになりますか?
(2)どういう羅列になりますか?(1byteに1bitの情報を代入?)
(座標にたいする配列の関係)
>(1)このデータ部の配列は何バイトになりますか?
色の設定に依存します。
2色ビットマップと仮定するとデータ部は16バイトです。
True colorの24ビットのビットマップと仮定すると384バイトです。
パレットは使ってますか?
参考サイト→ http://www.kk.iij4u.or.jp/~kondo/bmp/
説明すると長くなりますので、勉強のしかたを書きます。
ビットマップファイルの構造は理解しているようなので、
1.「ペイント」等のアプリで、64[pixl]×2[pixl]のビットマップを
作成して、保存する。
2.自前のコードで、このファイルを開いて、BITMAPFILEHEADER以下
を読み込むコードを作成。読み込めるようにする。
3.BITMAPINFOHEADER以下と使用して、BITMAPINFOを作成し、
読み込んだ画像データと共にしてCreateDIBSection() できるようにする。
4.戻されたHBITMAPが正しく表示できるようにする。
5.上記コードを基に保存コードを作る。
(6)もし、心が折れたら、素直にCImageなどに頼る。