RT

解决方案 »

  1.   

    pGraphics->GetClip(&reg);
        pGraphics->SetClip(m_Rect);
        pGraphics->Draw();
        pGraphics->SetClip(&reg);
      

  2.   

    1  首先建立内存DC2  在该内存DC上使用 GDI+ 绘图3  把内存DC 绘制到屏幕
      

  3.   

    To BoxFan(译作:饭盒?) :能讲解一下那些代码是干吗的嘛?To Saimen(向两星冲一把) :帮我看看
    原来的代码:OnPaint里面
        Graphics graphics(dc.m_hDC);// dc就那个 CPiantDC dc(this);
        graphics.DrawImage(m_pBitmap4Show, 0, 0, 400, 300);//m_pBitmap4Show是Bitmap指针
    这时是能正常显示,但移动窗口有闪烁;
    改为:
    m_dcMem.CreateCompatibleDC(&dc);//声明了一个CDC m_dcMem;

    Graphics graphics(m_dcMem.m_hDC);
    graphics.DrawImage(m_pBitmap4Show, 0, 0, 400, 300);
    dc.BitBlt(0, 0, 400, 300, &m_dcMem, 0, 0, SRCCOPY);

    m_dcMem.DeleteDC();
    结果就画不出来了,一片白屏。请教怎么回事?如何解决.....
      

  4.   

    因为你没有建立内存位图吧,内存dc要在内存里面画图,然后再把内存的位图拷贝到屏幕啊,加上下面几句看看: CDC m_dcMem; //声明了一个CDC m_dcMem;
    CBitmap memBitmap;//内存位图 m_dcMem.CreateCompatibleDC(&dc);
    memBitmap.CreateCompatibleBitmap(&dc, 400, 300);
    m_dcMem.SelectObject(&memBitmap);           .
               .
               .
    m_dcMem.DeleteDC();
    memBitmap.DeleteObject();
      

  5.   

    CPaintDC  dc(this)CDC dcMem; //声明了一个内存 dcMem;
    CBitmap memBitmap;//内存位图
    CBitmap* pOldBmp = NULL;dcMem.CreateCompatibleDC(&dc);// 根据paintDC  建立内存DC
    memBitmap.CreateCompatibleBitmap(&dc, 400,300);// 创建画布
    pOldBmp = dcMem.SelectObject(&memBitmap);               Graphics graphics(dcMem.m_hDC);
    graphics.DrawImage(m_pBitmap4Show, 0, 0, 400, 300); dc.BitBlt(0, 0, 400, 300, &m_dcMem, 0, 0, SRCCOPY);
       
    dcMem.DeleteDC();
    dcMem.SelectObject(pOldBmp);
    memBitmap.DeleteObject();
      

  6.   

    不行呀,BoxFan(译作:饭盒?)和Saimen(向两星冲一把)的2种方法都试了,还是闪烁。还有点子吗?