将CView内容复制到位图

时间:2011-10-15 23:28:03

标签: mfc bitmap cview

我想创建一个CView当前内容的位图副本,这些副本当前可能在屏幕上可见。这是我添加到OnDraw函数中的代码:

void 
MyView::OnDraw
( 
    CDC* pDC 
)
{

    ... normal processing ... 

    // Copy the view contents to a bitmap.

    CDC dc;
    dc.CreateCompatibleDC( pDC );

    if ( m_pBitmap != NULL )
    {
        delete m_pBitmap;
    }

    m_pBitmap = new CBitmap();
    m_pBitmap->CreateCompatibleBitmap( &dc, szView.cx, szView.cy );

    CBitmap* pOld = ( CBitmap* )dc.SelectObject( m_pBitmap );
    dc.BitBlt( 0, 0, szView.cx, szView.cy, pDC, 0, 0, SRCCOPY );
    dc.SelectObject( pOld );

}

但现在当我检查位图时,我可以看到每个像素只有1位。我确定我错过了什么,有人可以帮忙吗?

谢谢, 凯文

1 个答案:

答案 0 :(得分:1)

问题是在调用CreateCompatibleBitmap时需要将& dc更改为pDC。

凯文