一个CScrollView的类,MapMode为MM_TWIPS,实现的是画一个有横竖坐标的图,最后输出图的文字说明,为什么打印预览是正常的(文字、横竖坐标文字和图都正常),可打印出来的却不正常(只有图,其他文字都没有)。请问这是怎么回事?

解决方案 »

  1.   

    为什么要用MM_TWIPS?可以选择其他的模式啊,肯定是你的映射模式错了。
      

  2.   

    MM_TWIPS模式是一种专为排版设计的方式,设立这个映射模式完全是为了设计排版软件的方便。
      

  3.   

    这个我也遇到过,打印预览正常但是打印不正常,那你就可以在OnPrepareDC中将打印预览和打印分开,使用不同的映射模式。类似如下的代码:
    if (!pDC->IsPrinting() || pInfo->m_bPreview)//不是打印或者是打印预览
    {
    }
    else//打印
    {
                      }
      

  4.   

    void CMapDrawerView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
    {
    // TODO: 在此添加专用代码和/或调用基类 if (!pDC->IsPrinting() || pInfo->m_bPreview)
    CZoomView::OnPrepareDC(pDC, pInfo);
    else{
    CZoomView::OnPrepareDC(pDC, pInfo);
    //I really don't know why there is trouble, when printing GDI+ output to the priter, using MM_ANISOTROPIC mode
    // i test that MM_TEXT mode is OK. But my project us MM_ANISOTROPIC. I have resize viewpoint for the CDC before
    // painting.
    CSize size= pDC->GetViewportExt();
    int x = pDC->GetDeviceCaps(LOGPIXELSX) / 100;
    int y = pDC->GetDeviceCaps(LOGPIXELSY) / 100; pDC->SetViewportExt(CSize(size.cx/x, size.cy/y));
    CPoint p = pDC->GetWindowOrg(); pDC->SetViewportOrg(-p.x*x, p.y*y);
    pDC->OffsetViewportOrg(p.x,-p.y);

    }
    }
      

  5.   

    To:DentistryDoctor(雅克医生(潜心修内功,向各位大师取经了)) 
    你的方法我试过了,还是不行。
      

  6.   

    给我Email,给你一个例子,看能不能给你解决!
      

  7.   

    你的打印文字的代码写错地方了吧?
    是在OnPrint里么???