• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ビットマップのコピーについて)

ビットマップのコピーについて

このQ&Aのポイント
  • ビットマップファイルを読み込んでメモリDC上でコピーし、新しいファイルを生成するプログラムを作成していますが、生成された画像が全黒になってしまいます。
  • 現在、ビットマップのコピーを行うプログラムを作成中ですが、生成された画像が全黒になってしまいます。メモリDCを正しく利用する方法がわかりません。
  • ビットマップファイルの読み込みとコピーを行うプログラムを作成中ですが、生成された画像が全黒になってしまいます。メモリDCについて深い理解が必要なようです。

質問者が選んだベストアンサー

  • ベストアンサー
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

ベタな方法ですが、 処理のどこでコケているのか、返り値を一つずつ取得、確認するというのが確実です。 > hdcmem_old = CreateCompatibleDC ( NULL ); > SelectObject( hdcmem_old , hBitmap_old ); hdcmem_old = CreateCompatibleDC ( NULL ); if(hdcmem_old==NULL)エラー; HGDIOBJ obj = SelectObject( hdcmem_old , hBitmap_old ); if(obj==NULL)エラー; など。

tupad
質問者

お礼

お返事ありがとうございます。 一つ一つの関数は返り値を調べてチェックしておりますが 特にエラーは見つかりませんでした。 ためしに一つのメモリDCに対してGDI描画関数を用いて適当な図形を 描画してみたのですが、結果は全黒のビットマップのままでした。 -----処理の流れ(完全にオフスクリーンのみの処理です) "CreateCompatibleDC"でメモリDCを作り "CreateDIBSection"でBitmapハンドルを得て "SelectObject"でメモリDCとBitmapハンドルを関連付け "polygon"等のGDI関数を用いて描画 → 結果は全黒のビットマップ ・原因としては、メモリDCの確保の仕方がまずい ・現在1bitモノクロBITMAPを用いているため  CreateDIBSectionの第三引数が誤っている。 等考えられるのですが、以前はこのような書式で 描画することができました。 もし、何かご意見いただければ幸いです。 よろしくお願いします。

tupad
質問者

補足

BitBltがうまくいってないみたいなので、まずはLoadImageを使用せずに地道にビットマップファイルのヘッダを読み込んでデータを取り扱うことにしました。 どうもありがとうございました。

関連するQ&A

専門家に質問してみよう