DIBのピクセルの書き換えについて

解決


名無し  2005-02-25 09:03:48  No: 56537  IP: [192.*.*.*]

DIB(640x480ピクセルですべてのピクセルが黒)を作成しそのDIBをDCに描画することはできたのですが、作成したDIBのピクセルの色を変えて描画する方法がわかりません。
どなたかご指導をお願いしたいと思います。
よろしくお願いします。

編集    削除
いおり  2005-02-25 20:05:54  No: 56538  IP: [192.*.*.*]

::SetPixel

もしくは CreateDIBSection などでDIBのビット列を取得できているのなら、
直接ビット列を操作しても可能。
ただし、ビット列がどのような色フォーマットになっているかは
作成時の設定によって異なるので注意してください。

編集    削除
たく  2005-02-25 20:06:54  No: 56539  IP: [192.*.*.*]

すぐにおもいつくのは
・GetDIBitsでビット配列を取得し書き換える
・DCに選択後、SetPixelで書き換える
のどちらか

すべてのPIXELを同じ色にするのであれば
FillRectやFillSolidRect(MFC)のほうが楽かもしれません

編集    削除
名無し  2005-02-25 21:30:40  No: 56540  IP: [192.*.*.*]

SetPixelで色を設定すると遅いですよね?

編集    削除
Ban  2005-02-25 21:48:05  No: 56541  IP: [192.*.*.*]

遅いです。

編集    削除
変人  2005-02-26 04:37:01  No: 56542  IP: [192.*.*.*]

これは、DIBのピクセルの内容を変えたい、と言うこと?
それなら、SetPixelなどのGDIではなくメモリ上のフレームバッファを
直接書き換えることになります(DIBは、そうしたピクセル列への直接
アクセスを行うための仕組み)。

編集    削除
名無し  2005-03-04 02:43:52  No: 56543  IP: [192.*.*.*]

いろいろやっていたらできるようになりました。ありがとうございました。

編集    削除