打开一幅位图,但每次缩放窗口时,都会刷新一遍,而且速度也比较慢,有没有办法不让它刷新,或者,让用户感觉不到?

解决方案 »

  1.   

    在后台开一个memDC,将位图读入memDC中,缩放窗口后直接从memDC中将位图拷贝到显示DC中,速度相当快,用户感觉不到。
      

  2.   

    http://www.vckbase.com/document/viewdoc.asp?id=341
      

  3.   

    用CDC::GetClipBox()取得需要绘图的区域,可以只画这个区域而不需要全部重画,可以提高速度。
      

  4.   

    另外重载
    BOOL CMayorMailBoxCtrl::OnEraseBkgnd(CDC* pDC) 
    {
    // TODO: Add your message handler code here and/or call default

    return 0;//COleControl::OnEraseBkgnd(pDC);
    }
    不要窗口自动清屏.
      

  5.   

    在OnPaint()中试试以下代码看看:
    CPaintDC dc(this);
          OnPrepareDC(&dc);
         CRect rect32;
            dc.GetClipBox(&rect32);     
    CBitmap MemBitmap;
    MemBitmap.CreateCompatibleBitmap(m_memdc,rect32.right,rect32.bottom);
    CBitmap *pOldBitmap=m_memdc->SelectObject(&MemBitmap);
            m_memdc->PatBlt(rect32.left,rect32.top,
             rect32.Width(),rect32.Height(),PATCOPY);//创建一个内存画面x
            OnDraw(m_memdc);//在x上画图
            dc.BitBlt(rect32.left,rect32.top,rect32.Width(),rect32.Height(),
        m_memdc,rect32.left,rect32.top,SRCCOPY);//在dc上显示画面x出来
        m_memdc->SelectObject(pOldBitmap);//恢复m_memdc的画笔
        return;