& “窗口”与“视区”的概念往往不容易理解。“窗口”可以理解是一种逻辑坐标系下的矩形区域,而“视区”是设备坐标系下的矩形区域,根据“窗口”和“视区”的大小就可以确定x方向和y方向的比例因子:x方向比例因子=视区cx /窗口cx,y方向比例因子=视区cy/窗口cy。
一、如果设置SetWindowExt(100,100),SetViewportExt(200,200),则x方向和y方向的比例因子都为2,说明窗口的1个逻辑坐标映射为视区的2个像素。在这种映射模式下,绘制100×100逻辑坐标的正方形,结果为200×200像素的正方形。
void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CRect rect;//定义客户区
GetClientRect(&rect);//获得客户区的大小
pDC->SetMapMode(MM_ANISOTROPIC);//设置映射模式
pDC->SetWindowExt(100,100);//设置窗口的范围
pDC->SetViewportExt(200,200);//设置视区的范围
pDC->SetViewportOrg(200,200);//设置视口的原点
pDC->Rectangle(-50,-50,50,50);
}
二、如果设置 SetWindowExt(100,200) , SetViewportExt(200,200) ,则 x 方向比例因子为 2 , y 方向的比例因子为 1 ,说明窗口 x 方向的 1 个逻辑坐标映射为视区的 2 个像素,窗口 y 方向的 1 个逻辑坐标映射为视区的 1 个像素。绘制 100 × 100 逻辑坐标的正方形,结果为 200 × 100 像素的长方形。