用双缓存画一张BMP图
且图片可以随滚动条的移动而改变,从而做到相对静止。
OnEraseBkgnd也返回true但当移动滚动条的时候依然会出现图片闪烁的现象。
是不是InvalidateRect的次数太多了...
但没办法,只要移动滚动条就必须重绘一下图片,使其可以相对静止
闪了很不舒服,应该怎么解决呢?

解决方案 »

  1.   

    我是这样画的,哪里有问题呢?
    //.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);
    }
    }
      

  2.   

    在你的那个窗口上再新建一个STATIC,把图片显示在STATIC上。这样你在滚动窗口的时候STATIC是不会被刷新的。