• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ビットマップに描画をしてピクチャーコントロールに貼り付けるためには?)

ビットマップに描画をしてピクチャーコントロールに貼り付ける方法

このQ&Aのポイント
  • ビットマップに描画をしてピクチャーコントロールに貼り付けるためには、どのような方法があるか調べましたがうまくいかなかったようです。
  • 質問者はC++のビットマップ描画に関するコードを記述しましたが、ピクチャーコントロールには描画がされていないとのことです。
  • ビットマップに直線を描画することはできたが、ビットマップ全体を描画して貼り付ける方法がわからないとのことです。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答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では関数から出た時点で破棄されてしまうので スタティックコントロールが再描画される時点では 無効なビットマップハンドルになってしまうため描画されないのだと思います

wxy
質問者

お礼

ありがとうございます、 ビットマップをパブリックの変数にしまして bitblt関数を使用することで解決しました、 ありがとうございます。

関連するQ&A