

ビットマップに描画をしてピクチャーコントロールに貼り付けるためには
どうすればよいでしょうか?
ネットで検索しましたそして、
下のようなコードを書きましたがうまくゆきません。
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
- 美術・アート ペンタブとオフィス系ソフト 1 2022/10/08 19:27
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#を用いて描画する四角形の角...
-
ビットマップに描画をしてピク...
-
MFCでのコンボボックスについて
-
VB.NETでphotoshopのレイヤーの...
-
WindowsAPIの、ウインドウの表...
-
Bitmap画像の消去について
-
Gdiplus::Graphics::DrawPath()...
-
ListBoxで改行したい
-
worksheetFunctionクラスのVloo...
-
VBA(エクセル)で自動的にボタン...
-
VBA シートのボタン名を変更し...
-
パソコンへの「Dropbox...
-
実行時エラー 438になった時の...
-
「Columns("A:C")」の列文字を...
-
ユーザーフォームを表示中にシ...
-
EXCELでactivexコントロールを...
-
【C#/Java?】try-catchでcatch...
-
ユーザーフォームで動的(Me.Con...
-
なぜこんな初歩的なVBAのIf文で...
-
vbaのエラー対応(実行時エラー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
給紙トレイをダイアログを使わ...
-
C#を用いて描画する四角形の角...
-
vb6のTEXTBOX
-
PowerPoint の VBA
-
for文の実行速度を遅くしたいの...
-
win32api複数のタイマーを同時...
-
MFCでのコンボボックスについて
-
VB.netで図形描画ができません^^;
-
花火のアルゴリズム
-
図の削除直後の再描画
-
円の頂点の求め方を知りたいです。
-
C# DrawImage 物理サイズでな...
-
VB.NETでグラフィックを描くと...
-
PictureBoxのダブルバッファリ...
-
色を合成するには
-
C++/CLIを用いて画像をクリップ...
-
【Delphi】 Canvasへの描画につ...
-
エクセルのレーダーチャート 0...
-
C#で壁の当たり判定と自キャラ...
おすすめ情報