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

 孔令德编写的《计算机图形学基础教程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 方向比例因子为 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);
}

 图片


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值