• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mfcの画像表示で、bmp表示がよくわかりません)

MFCの画像表示でBMP表示がよくわからない

このQ&Aのポイント
  • MFCの画像表示でBMP表示について詳細に紹介しているHPを教えてください。
  • 下記のプログラムの画像の扱いで問題があるかどうか教えてください。
  • 画像を敷き詰めるプログラムですが、問題なく動作しています。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

int topX=-100-5; int topY=0; int hLen=100; int wLen=100; int yoko=0; CDC *pDC=mPict.GetDC(); // bmpDC自体はループの外で宣言しておく CDC bmpDC; bmpDC.CreateCompatibleDC(pDC); CBitmap *pBitmap=CBitmap::FromHandle(hBitAry.GetAt(0)); // poldbmpは 初回のみ記憶すればいい CBitmap* poldbmp ~ bmpDC.SelectObject( pBmitmap ); BITMAP BMP; for(int i=0; i<hBitAry.GetCount(); i++) {   pBitmap=CBitmap::FromHandle(hBitAry.GetAt(i));   pBitmap->GetBitmap(&BMP);   if(yoko<3)   {     topX+=100+5;     yoko++;   }   else   {     topX=0;     topY+=100+5;     yoko=0;   }   pDC->SetStretchBltMode(COLORONCOLOR);   pDC->StretchBlt(topX,topY,100,100,&bmpDC,0,0,BMP.bmWidth,BMP.bmHeight,SRCCOPY);   // bmpDCの状態を戻すのはループの外でいい   // bmpDC.SelectObject(oldbmp);   // ここでのDeleteObjectは pBitmapのメンバーで行う   // ::DeleteObject(CBitmap::FromHandle(hBitAry.GetAt(i)));   pBitmap->DeleteObject(); } // ここで戻す bmpDC.SelectObject(oldbmp); bmpDC.DeleteDC(); ReleaseDC(pDC); といった具合かと …

rechirin
質問者

お礼

丁寧にご添削頂きありがとうございました。 どうも、上記で言えば、bmpDC.SelectObject(oldbmp) の仕組みがよくわからず悩んでいました。 お教え頂いたおかげで少しだけ"流れ"はわかったような気がします。 …ところで、あつかましついでですが、 この仕組みを紹介しているサイト等ご存じ ないでしょうか? 多くのページで"戻す"等の記述は見られるのですが、 なぜそうするのかという説明を見つけられませんでした。 こういったことを紹介しているHPがご存じであれば お教えください。 よろしくお願い致します。 *あと、2,3日でこの質問を切らせて頂くつもりです。 本当にありがとうございました。

関連するQ&A