0

我想为我的 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 位。我确定我错过了一些东西,有人可以帮忙吗?

谢谢,凯文

4

1 回答 1

1

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

凯文

于 2011-10-18T16:08:02.183 回答