计算机图形学中“窗口”与“视区”的演示

 孔令德编写的《计算机图形学基础教程Visual C++版》P50

& “窗口”与“视区”的概念往往不容易理解。“窗口”可以理解是一种逻辑坐标系下的矩形区域,而“视区”是设备坐标系下的矩形区域,根据“窗口”和“视区”的大小就可以确定x方向和y方向的比例因子:x方向比例因子=视区cx /窗口cxy方向比例因子=视区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);

}

计算机图形学中“窗口”与“视区”的演示_第1张图片 

二、如果设置 SetWindowExt(100,200) SetViewportExt(200,200) ,则 x 方向比例因子为 2 y 方向的比例因子为 1 ,说明窗口 x 方向的 1 个逻辑坐标映射为视区的 2 个像素,窗口 y 方向的 1 个逻辑坐标映射为视区的 1 个像素。绘制 100 × 100 逻辑坐标的正方形,结果为 200 × 100 像素的长方形
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,200);//设置窗口的范围
     pDC->SetViewportExt(200,200);//设置视区的范围
     //设置视口的原点
     pDC->SetViewportOrg(200,200);
     pDC->Rectangle(-50,-50,50,50);
}

 计算机图形学中“窗口”与“视区”的演示_第2张图片


你可能感兴趣的:(计算机图形学中“窗口”与“视区”的演示)