どなたか助けてください。
下記ソースをチェックしていただけないでしょうか?
ビットマップ画像処理を行うために、CreateDIBSection()で編集領域を
確保して、imageにコピーして画像操作を行いたいのですが、
Debug Assertion Failedというエラーがでます。
知識不足ということもあり、ソース自体に問題がある可能性の方が高いのですが、
根本的に画像操作に対する考え方が間違っているのでしょうか?
ご教授よろしくお願い致します。
環境はVC++6.0 MFC ダイアログベースです
BOOL C***Dlg::*******()
{
HBITMAP hBmp;
BITMAPINFOHEADER bi;
unsigned *bmbuf;
image , MemDC, MemDC2はPublicです。
bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biWidth = 16;
bi.biHeight = -40; //top-down
bi.biPlanes = 1;
bi.biBitCount = 32;
bi.biCompression = BI_RGB;
bi.biSizeImage = 0;
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed = 0;
bi.biClrImportant = 0;
hBmp=CreateDIBSection(NULL,
(LPBITMAPINFO)&bi,
DIB_RGB_COLORS,
(void **)(&bmbuf),
NULL,
0);
CDC* pDC = this->GetDC();
MemDC.CreateCompatibleDC(pDC);
SelectObject(MemDC.m_hDC,hBmp);
MemDC2.CreateCompatibleDC(pDC);
HBITMAP h_BMP =
(HBITMAP)LoadImage(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_******),
IMAGE_BITMAP, 16, 40, LR_CREATEDIBSECTION);
HBITMAP h_OLD_BMP = (HBITMAP)::SelectObject(MemDC2.m_hDC,h_BMP);
m_pbg1dc->BitBlt(42,16,100,100,&MemDC2,0,0,SRCCOPY);
memcpy(image, bmbuf, 16 * 40 * 4);
::SelectObject(MemDC2.m_hDC,h_OLD_BMP);
MemDC2.DeleteDC();
DeleteObject(hBmp);
return TRUE;
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは、
私も似たようなプログラムを組んでます。
まず一つの間違いとしては、、、最後の行の
DeleteObject(hBmp);
はやってはいけないと思います。MemDCが使用中ですから、、
::SelectObject(MemDC2.m_hDC,h_OLD_BMP);
のようにMemDCにも戻してください。
imageは配列ですか?
私のやり方は多少違います。CBitmapクラスを使ってます。
CBitmap::CreateCompatibleBitmapが作ってくれるはずです。
また、余計な話ですけど、、どうせMFCを使うんであれば、
SelectObject(MemDC.m_hDC,hBmp);
を
MemDCSelectObject(hBmp);
のように記述したほうがわかりやすいと思います。
この回答への補足
imageは二次元配列です。
CreateDIBSectionの戻り値のバッファをコピーしてます。
このimageの中身を操作して表示させようとしています。
No.2
- 回答日時:
上のソースコードに対して質問していいですか。
MemDCは作っただけでどこにも使われてないのですが、、
また、m_pbg1dcは?
CreateDIBSectionはあまり使ったことがなくてよくわかりませんが、、
SelectObject(MemDC.m_hDC,hBmp);
などで指定するBitmapはDC交換性を持たなければいけないと思いますけど、、
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(IT・Webサービス) html cssについて 3 2023/05/13 12:48
- 数学 a+bi って虚数とも捉えられるし複素数とも捉えられますか? 4 2023/05/26 11:27
- 大学受験 準同型写像 2 2023/03/16 18:16
- 経済学 経済学の問題 1 2022/11/12 01:45
- 統計学 X ∼ DU(6) のとき,E[X] X ∼ Bi(100, 0.5) のとき,E[X] Var(X 1 2022/07/19 15:08
- Excel(エクセル) 【Excelの集計について質問です。】 7 2022/12/03 16:51
- Excel(エクセル) Power Query でのデータの一括修正について 2 2022/05/10 02:00
- 数学 複素数平面についての質問です。 なぜ、xy座標で(a,b)じゃなくてa+biなんですか? 5 2023/07/09 01:23
- 工学 半導体のドーパントについて質問です。 Siのドーパントとして、一般にB,P,Asが使われています。 1 2023/07/20 21:09
- 数学 『0=0・a+0・bi?』 5 2022/09/05 00:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アップロード画像数でCSSを分け...
-
【PHP】サーバー上で TIFFをJPE...
-
★PHP★画像アップロードの際に余...
-
PythonのTkinter詳しい方へ。画...
-
C#とJavaで、MP3タグの画像を表...
-
C# Excelファイルへの画像挿入。
-
透過PNGが透過されない!!
-
Illustratorで文字と画像を流し...
-
GDの画像変換でサーバーに負荷
-
PHP + MySQL で画像データ表示
-
エクセルでカレンダーマクロの...
-
PHPで半透明画像を作りたい
-
VBSの「MsgBox」について
-
imageフォルダに、画像をリサイ...
-
PostgreSQLのラージオブジェク...
-
<img src="http://x.y.com/cgi-...
-
VBAでJPGサイズ変更
-
PHPによる画像の生成による色の...
-
こちらはただの直列処理ですか?
-
フォントの色を変えるには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの「MsgBox」について
-
拡張子php画像をjpg画像等に変...
-
透過PNGが透過されない!!
-
アップロード画像数でCSSを分け...
-
imageフォルダに、画像をリサイ...
-
VBAでJPGサイズ変更
-
Illustratorで文字と画像を流し...
-
VBAのコードを教えてください
-
C# Excelファイルへの画像挿入。
-
php,mysqlにて画像パス保存/表...
-
GDI+を使ったビット数とDPIの扱い
-
SQLiteに画像を格納したい
-
ListViewコントロールでサムネ...
-
★PHP?★画像を縦横比を変えずに...
-
ビットマップ画像を読み込むプ...
-
phpで画像がどうしても文字化け...
-
PHPで吐き出した画像にリンクを...
-
phpMyAdminに画像を保存できない
-
OpenGLで描いて画像ファイル出力
-
手作業で埋め込んだ、UserForm1...
おすすめ情報