本帖最后由 buzuohaoren 于 2010-01-23 14:28:38 编辑

解决方案 »

  1.   

    按你的程序思路,在dcmem里画完后还是要画到pDC中,干嘛不一步到位直接在pDC中画呢?
    如果一定要在dcmem中画,可以把
    pDC->BitBlt(0,0,nWidth/xSampleRatio, nHeight/ySampleRatio,   
            &dcmem,0,0,SRCCOPY); 
    去掉,在OnDraw(...)中用如下代码:
        CRect updateRect;
    pDC->GetClipBox(updateRect);
    pDC->BitBlt(updateRect.left, updateRect.top, updateRect.Width(), updateRect.Height(),
         m_pDt, updateRect.left, updateRect.top, SRCCOPY);
    即可。
      

  2.   

    换成这样,还是老问题。
    “执行放大操作后,xSampleRatio=2,ySampleRatio=2,就只能显示1/4图像,到xSampleRatio=1,ySampleRatio=1的时候,就无法显示图像了,什么都没有了。int nn = StretchDIBits();即使在不能正常显示图像的情况下,这里返回的行数nn每次都是正确的9000。。”
      

  3.   

    多谢楼上的回答!!
    不是这样的,应该是都放大了,是滚动视图,可以完全显示的。
    如果不用内存DC,直接StretchDIBits(pDC->m_hDC)是没有问题的,放大都可以完全显示的。
      

  4.   

    Trace 看看你的MemDC选入的Bitmap是否没有Create成功啊?