ビットマップに描画をしてピクチャーコントロールに貼り付けるためには
どうすればよいでしょうか?
ネットで検索しましたそして、
下のようなコードを書きましたがうまくゆきません。
void CXXXView::OnButton()
{
CStatic m_ctlImage; // ピクチャーボックスに関連付けした変数
CBitmap m_bmpImage; // ピクチャーボックスに貼り付けるイメージ
CDC m_dcImage; // Bitmap描画用のDC
CDC* pDC = m_ctlImage.GetDC();
m_dcImage.CreateCompatibleDC(pDC);
CRect Cltsz;
picture1.GetClientRect(&Cltsz);
m_bmpImage.CreateCompatibleBitmap(pDC,Cltsz.Width(),Cltsz.Height());
CBitmap* pOld=m_dcImage.SelectObject(&m_bmpImage);
CPen myPEN(PS_SOLID,5,RGB(0,0,255));
CPen* oldPEN=m_dcImage.SelectObject(&myPEN);
m_dcImage.MoveTo(10,10);
m_dcImage.LineTo(100,100);
m_dcImage.SelectObject(oldPEN);
m_dcImage.SelectObject(pOld);
m_ctlImage.SetBitmap(m_bmpImage);
}
この様にしましたが、ピクチャーコントロールには
何も描画されません、
何故でしょうか?
VS2005で、ボタンをクリックした
イベントで描画する場合です、
直線とかは、問題なく描画できました。
ビットマップに描画して貼り付けたいのです、
よろしくお願いします
No.1ベストアンサー
- 回答日時:
CStatic型とCBitmap型の変数は クラスのメンバー変数にします
ViewクラスのOnCreateなどでm_ctlImageのインスタンスを作成しておきます
ボタンのOnClickイベントで
CDC* pDC = m_ctlImage.GetDC();
CDC* pMemDC = new CDC;
pMemDC->CreateCompatibleDC( pDC );
m_ctlImage.ReleaseDC( pDC );
if (m_bmpImage.m_hObject != NULL ) {
// 前回作成オブジェクトを破棄する
m_bmpImage.DeleteObject();
}
CRect rc;
m_ctlImage.GetClientRect( &rc );
m_bmpImage.CreateCompatibleBitmap( pMemDC, rc.Width(), rc.Height() );
CBitmap* pold = pMemDC->SelectObject( &m_bmpImage );
CPen myPen(PS_SIOLID, 5, RGB( 0, 0, 255 ) );
PCen*pOldPen = pMemDC->SelectObejct( &myPen );
pMemDC->MoveTo(10, 10 );
pMemDC->Lineto( 100, 100 );
pMemDC->SelectObejct( pOld );
pMemDC->SelectObject( pOldPen );
pMemDC->DeleteDC();
delete pMemDC;
m_ctlImage->setImage( m_bmpImage );
といった具合です
ご質問のコードではm_ctlImage.GetDC()でアサートが発生しませんか
ローカル変数のCBitmapでは関数から出た時点で破棄されてしまうので
スタティックコントロールが再描画される時点では 無効なビットマップハンドルになってしまうため描画されないのだと思います
ありがとうございます、
ビットマップをパブリックの変数にしまして
bitblt関数を使用することで解決しました、
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonによる物理の斜方投射の位置座標表示について 2 2023/06/05 12:46
- その他(プログラミング・Web制作) Pythonにおける物理のシミュレーションでの単位変換について 2 2023/06/02 17:11
- PowerPoint(パワーポイント) パワーポイントの図をWordへ貼り付け 1 2022/11/09 21:28
- Windows 7 ショートカットキー 応用編 どういうの主に使いますか? 2 2022/12/28 23:46
- その他(Microsoft Office) エクセルマクロ オートフィルターでで選択コピー 2 2022/04/18 11:05
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- その他(アニメ・マンガ・特撮) このイラストの元ネタはなんだかわかりますか? とりあえず2名の方が描いてますが、キャラがあるんでしょ 3 2023/04/10 09:50
- 統計学 母平均の検定(両側t検定)の問題 2 2023/03/14 20:02
- マンガ・コミック 漫画の練習方について 1 2022/06/06 19:26
- 美術・アート イラスト評価、添削お願いします。 線画前の下書きの段階ですが、線画をする前に直せるところは直しておき 4 2022/04/03 18:14
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
MFC - ダイアログボックスのPictureControlへの画像表示
C言語・C++・C#
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
-
4
VC++プログラムをつかったBMP画像の拡大縮小について
C言語・C++・C#
-
5
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
6
リソースエディタでスタティックテキストの文字サイズの変更
C言語・C++・C#
-
7
ダイアログボックスで指定したサイズどおり表示されない
C言語・C++・C#
-
8
MFCで画像を表示させているのですが、透過表示する方法がわかりません。
C言語・C++・C#
-
9
MFCでOnPaintのタイミング
C言語・C++・C#
-
10
CStaticコントロールの静的イメージ描画
C言語・C++・C#
-
11
画像の保存方法。
C言語・C++・C#
-
12
ボタンの配置を変更したい
C言語・C++・C#
-
13
MFCダイアログボックスを最前面に表示
C言語・C++・C#
-
14
ラジオボタンの値の取得について(C++)
C言語・C++・C#
-
15
ダイアログ内コントロールの位置取得について
C言語・C++・C#
-
16
CEdit の内容が変わった時にメッセージを表示させたい
C言語・C++・C#
-
17
StretchBlt関数について
C言語・C++・C#
-
18
VC++で文字列から任意の文字を削除するにはどうしたらいいですか?
C言語・C++・C#
-
19
MFCでのBITMAP作成について
C言語・C++・C#
-
20
テキストボックスからフォーカス外す
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ListBoxで改行したい
-
画面に絵を出す方法
-
角が丸い長方形の描画
-
c言語 ちらつき
-
Word 描画オブジェクトを削除...
-
for文の実行速度を遅くしたいの...
-
BCB5:Canvas->FrameRectで描画...
-
C++/CLIを用いて画像をクリップ...
-
CADとC言語のリンク
-
C# シューティングゲーム ...
-
iPhoneのニューラルエンジンっ...
-
カメラスクロールするのを動画...
-
worksheetFunctionクラスのVloo...
-
VBA シートのボタン名を変更し...
-
実行時エラー 438になった時の...
-
VBA(エクセル)で自動的にボタン...
-
【C#/Java?】try-catchでcatch...
-
ユーザーフォームを表示中にシ...
-
private subモジュールを他のモ...
-
「Columns("A:C")」の列文字を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
for文の実行速度を遅くしたいの...
-
給紙トレイをダイアログを使わ...
-
Word 描画オブジェクトを削除...
-
VB.NETでグラフィックを描くと...
-
C#を用いて描画する四角形の角...
-
C# DrawImage 物理サイズでな...
-
ビットマップに描画をしてピク...
-
PowerPoint の VBA
-
画面に絵を出す方法
-
DrawLineで引いた線が消えてし...
-
VC++ ドラッグしながらの図の...
-
円の頂点の求め方を知りたいです。
-
MFCでのコンボボックスについて
-
画面の再描画について
-
Windows10のC#のピクチャーボッ...
-
フォームに描画して表示をスク...
-
VB PictureBoxの描画範囲
-
PictureBoxのダブルバッファリ...
-
C#で壁の当たり判定と自キャラ...
おすすめ情報