比如有如下代码
pDC->SetMapMode(MM_ISOTROPIC);
pDC->SetWindowExt(500, 500);
pDC->SetViewportExt(800, 100);
对于MM_ISOTROPIC映射方式,词“isotropic”表示在所有的方向都“相等”,即该方式的用途是在两个轴上保持相等的逻辑单位.
(500,500)对(800,100)是怎么保持两个轴上的逻辑单位表示相同的物理距离的呀?

解决方案 »

  1.   

    不要设置这么大,这个跟实际的视图大小无关,所以可以设置小一点,取个整数比例pDC->SetWindowExt(5, 5);
    pDC->SetViewportExt(1, 1);这样就保持比例了
      

  2.   

    恩,krh2001(边城浪子) 说的对。
      

  3.   

    to: krh2001(边城浪子)
    pDC->SetWindowExt(5, 5);
    pDC->SetViewportExt(1, 1);
    那pDC->SetViewportExt(1, 1)中的1,1是像数单位,这么小的区域怎么画图呀?如果有以下代码:pDC->SetMapMode(MM_ISOTROPIC);
        pDC->SetWindowExt(10, 500);
        pDC->SetViewportExt(1, -50);
        pDC->SetViewportOrg(500, 250);
        pDC->Ellipse(CRect(250, -250, -250, 250));
    能解释一下各个数字的意思吗?
    SetWindowExt,SetViewportExt中的参数没有什么实际意义,只是为了确定比例的吗?
    那pDC->Ellipse(CRect(250, -250, -250, 250))中的250, -250, -250, 250与pDC->SetWindowExt(10, 500)中的10, 500有什么关系?
      

  4.   


    如果要使你画出来的线条和系统的一样,通常我使这么处理的:
    CRect rect;
    GetClientRect(&rect);
    dc.SetMapMode(MM_ANISOTROPIC);//设置不同比例的坐标系
    dc.SetViewportOrg(rect.left,rect.bottom);//坐标原点 左下脚
    dc.SetViewportExt(rect.right,rect.bottom);//
    dc.SetWindowOrg(0,0);
    dc.SetWindowExt(rect.right,-rect.bottom);
      

  5.   

    一般我们在数学中用的坐标系都是相同比例的吧,
    为何在MM_ISOTROPIC模式下DrawText输出的字符大小会因为坐标范围的不同而改变