裏画面をつかった描画 – プログラミング – Home

通知
すべてクリア

[解決済] 裏画面をつかった描画


ガラ
 ガラ
(@ガラ)
ゲスト
結合: 20年前
投稿: 201
Topic starter  

OnDraw 関数のなかで裏画面をつかってBitBlt() で表画面にコピーしたいのですが、
なぜだか、なにもでてきません。
どうしてでしょうか?
どなたか、教えてください。
void CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: この場所にネイティブ データ用の描画コードを追加します。

CDC MemDC ;
LONG lMemHeight, lMemWidth;
CRect rect;
CPen pen (PS_SOLID,5,RGB(0,0,9));
GetClientRect(&rect);

lMemHeight = rect.Height() ;
lMemWidth = rect.Width();

MemDC.CreateCompatibleDC(pDC) ;
MemDC.FillRect(rect, &CBrush(RGB(0xa0, 0xa0, 0xa0)));

pDC->BitBlt(0, 0, lMemWidth, lMemHeight, &MemDC, 0, 0, SRCCOPY);

}


引用未解決
トピックタグ
NowNow
 NowNow
(@NowNow)
ゲスト
結合: 20年前
投稿: 27
 

MFCで試したこと無いので、的外れかもしれませんが…。

CreateCompatibleBitmapなどで、ビットマップを作成し、それをHDCにSelectObjectで関
連付けした上で描画。
その後、表のHDCへBitBltしないといけないのではないでしょうか?

# MFCだとCBitmapでも使うのかな?


返信引用
ガラ
 ガラ
(@ガラ)
ゲスト
結合: 20年前
投稿: 201
Topic starter  

できた♪
NowNowさんありがとうございます。

void CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: この場所にネイティブ データ用の描画コードを追加します。
CDC MemDC ;
LONG lMemHeight, lMemWidth; //新しく宣言した変数(2つ)
CRect rect;
CBitmap* pMemBmp, MemBitmap;

GetClientRect(&rect);

lMemHeight = rect.Height() ;
lMemWidth = rect.Width();

MemDC.CreateCompatibleDC(pDC) ;

//新しく挿入した行(2行)
MemBitmap.CreateCompatibleBitmap(pDC, lMemWidth, lMemHeight);
pMemBmp = MemDC.SelectObject(&MemBitmap);

MemDC.FillRect(rect, &CBrush(RGB(0xa0, 0xa0, 0xa0)));

pDC->BitBlt(0, 0, lMemWidth, lMemHeight, &MemDC, 0, 0, SRCCOPY);

}


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました