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

来源:互联网 发布:浙江省数据库三级 编辑:程序博客网 时间:2024/06/05 21:00
 孔令德编写的《计算机图形学基础教程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);

}

图片 

二、如果设置SetWindowExt(100,200)SetViewportExt(200,200),则x方向比例因子为2y方向的比例因子为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);
}

 图片


0 0
原创粉丝点击