用双缓存画一张BMP图
且图片可以随滚动条的移动而改变,从而做到相对静止。
OnEraseBkgnd也返回true但当移动滚动条的时候依然会出现图片闪烁的现象。
是不是InvalidateRect的次数太多了...
但没办法,只要移动滚动条就必须重绘一下图片,使其可以相对静止闪了很不舒服,应该怎么解决呢?
且图片可以随滚动条的移动而改变,从而做到相对静止。
OnEraseBkgnd也返回true但当移动滚动条的时候依然会出现图片闪烁的现象。
是不是InvalidateRect的次数太多了...
但没办法,只要移动滚动条就必须重绘一下图片,使其可以相对静止闪了很不舒服,应该怎么解决呢?
//.h
CDC m_dcMem;//.cpp
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog(); CPaintDC dc(this);
m_dcMem.CreateCompatibleDC( &dc ); return TRUE;
}void CTestDlg::OnPaint()
{
CPaintDC dc(this); HBITMAP hChairBmpNew = (HBITMAP)LoadImage(AfxGetInstanceHandle(), "E:\\Games\\PlatForm\\OutPut\\PicData\\Table\\chair.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
if( NULL != hChairBmpNew )
{
BITMAP bmChailrInfo;
GetObject( hChairBmpNew , sizeof(BITMAP), &bmChailrInfo ); CBitmap Bitmap;
Bitmap.Attach(hChairBmpNew);
CBitmap * pOldBmp = m_dcMem.SelectObject(&Bitmap); dc.BitBlt(m_sourceChairX, m_sourceChairY, m_rectLeft.Width(), m_rectLeft.Height(), &m_dcMem, 0, 0, SRCCOPY); m_dcMem.SelectObject(pOldBmp);
DeleteObject(hChairBmpNew);
}
}