比如有如下代码
pDC->SetMapMode(MM_ISOTROPIC);
pDC->SetWindowExt(500, 500);
pDC->SetViewportExt(800, 100);
对于MM_ISOTROPIC映射方式,词“isotropic”表示在所有的方向都“相等”,即该方式的用途是在两个轴上保持相等的逻辑单位.
(500,500)对(800,100)是怎么保持两个轴上的逻辑单位表示相同的物理距离的呀?
pDC->SetMapMode(MM_ISOTROPIC);
pDC->SetWindowExt(500, 500);
pDC->SetViewportExt(800, 100);
对于MM_ISOTROPIC映射方式,词“isotropic”表示在所有的方向都“相等”,即该方式的用途是在两个轴上保持相等的逻辑单位.
(500,500)对(800,100)是怎么保持两个轴上的逻辑单位表示相同的物理距离的呀?
pDC->SetViewportExt(1, 1);这样就保持比例了
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有什么关系?
如果要使你画出来的线条和系统的一样,通常我使这么处理的:
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);
为何在MM_ISOTROPIC模式下DrawText输出的字符大小会因为坐标范围的不同而改变