我用画图画了512×512@24bit的位图,可利用如下API时:
HBITMAP hBmp = (HBITMAP) ::LoadImage(...);
BITMAP bm;
::GetObject(...);
// hDC, hDCBmp are valid
::SelectObject(hDCBmp, hBmp);
::BitBlt(...);
//...
关键是bm.bmWidth == bm.bmHeight == 64了。即使在BitBlt中使用512也没用。谁知道是怎么回事。谢谢。
我用画图画了512×512@24bit的位图,可利用如下API时:
HBITMAP hBmp = (HBITMAP) ::LoadImage(...);
BITMAP bm;
::GetObject(...);
// hDC, hDCBmp are valid
::SelectObject(hDCBmp, hBmp);
::BitBlt(...);
//...
关键是bm.bmWidth == bm.bmHeight == 64了。即使在BitBlt中使用512也没用。谁知道是怎么回事。谢谢。
2006-10-13 07:34
2006-10-13 08:47
2006-10-13 09:09
2006-10-13 09:40
2006-10-13 09:42
代码:
if(! hBmp)
{
return FALSE;
}
m_lpDDSBack->Restore();
::DeleteObject( m_hBmp );
m_hBmp = hBmp;
HDC hDC;
HDC hDCBmp = ::CreateCompatibleDC( NULL );
::SelectObject(hDCBmp, m_hBmp);
BITMAP bm;
::GetObject(m_hBmp, sizeof( bm ), &bm);
m_rcSrc.left = m_rcSrc.top = 0;
m_rcSrc.right = bm.bmWidth;
m_rcSrc.bottom = bm.bmHeight;
m_lpDDSBack->GetDC( &hDC );
::BitBlt(hDC, 0, 0, bm.bmWidth, bm.bmHeight, hDCBmp, 0, 0, SRCCOPY);
m_lpDDSBack->ReleaseDC( hDC );
::DeleteDC( hDCBmp );
hBmp 就是用LoadImage得到的。

2006-10-13 09:47
2006-10-13 09:53
2006-10-13 09:56
2006-10-13 11:56
2006-10-13 11:59