VC中坐标系的建立
来源:互联网 发布:淘宝虚拟店铺入驻 编辑:程序博客网 时间:2024/05/01 15:56
(一) 建立以左上角为原点,X轴和Y轴为1000的坐标
我们可以用以下代码:
void CTtView::OnDraw(CDC* pDC)
{
CTtDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetViewportOrg(0,0);
pDC->SetViewportExt(rect.right,rect.bottom);
pDC->SetWindowOrg(0,0);
pDC->SetWindowExt(1000,1000);
pDC->MoveTo(50,50);
pDC->LineTo(50,950);
pDC->LineTo(950,950);
pDC->LineTo(50,50);
}
代码分析:
1. GetClientRect(&rect); 取得客户区矩形区域,将其存放在rect中
2. 用pDC->SetMapMode(MM_ANISOTROPIC); 设置映射模式
3. 通过pDC->SetViewportOrg(0,0);设置逻辑坐标的原点
4. 通过pDC->SetViewportExt(rect.right,rect.bottom);和
pDC->SetWindowExt(1000,1000);来确定逻辑坐标下和设备坐标下的尺寸对应关系
5. 在MM_ANISOTROPIC模式下,X轴单位和Y轴单位可以不相同
6. 坐标方向的确定方法是如果逻辑窗范围和视口范围符号相同,则逻辑坐标的方向和视口的方向相同,即X轴向右为正,Y轴向下为正。
7. 如果将显示模式改为MM_ISOTROPIC,那么X轴单位和Y轴单位一定相同,感兴趣的读者可以自己使一下。
(二) 建立以视窗中心为原点的坐标
用如下代码:
void CTtView::OnDraw(CDC* pDC)
{
CTtDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetViewportOrg(rect.right/2,rect.bottom/2);
pDC->SetViewportExt(rect.right,rect.bottom);
pDC->SetWindowOrg(0,0);
pDC->SetWindowExt(1000,-1000);
pDC->MoveTo(150,150);
pDC->LineTo(-150,-200);
pDC->LineTo(150,-150);
pDC->LineTo(150,150);
}
代码分析:
1. 用 pDC->SetViewportOrg(rect.right/2,rect.bottom/2); 设置视口的原点。
2. 用pDC->SetViewportExt(rect.right,rect.bottom);和pDC->SetWindowExt(1000,-1000);来确定设备坐标和逻辑坐标的单位对应关系。
3. 因为逻辑窗范围和视口范围的符号不一致,纵坐标取反,所以Y轴向上为正。
我们可以用以下代码:
void CTtView::OnDraw(CDC* pDC)
{
CTtDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetViewportOrg(0,0);
pDC->SetViewportExt(rect.right,rect.bottom);
pDC->SetWindowOrg(0,0);
pDC->SetWindowExt(1000,1000);
pDC->MoveTo(50,50);
pDC->LineTo(50,950);
pDC->LineTo(950,950);
pDC->LineTo(50,50);
}
代码分析:
1. GetClientRect(&rect); 取得客户区矩形区域,将其存放在rect中
2. 用pDC->SetMapMode(MM_ANISOTROPIC); 设置映射模式
3. 通过pDC->SetViewportOrg(0,0);设置逻辑坐标的原点
4. 通过pDC->SetViewportExt(rect.right,rect.bottom);和
pDC->SetWindowExt(1000,1000);来确定逻辑坐标下和设备坐标下的尺寸对应关系
5. 在MM_ANISOTROPIC模式下,X轴单位和Y轴单位可以不相同
6. 坐标方向的确定方法是如果逻辑窗范围和视口范围符号相同,则逻辑坐标的方向和视口的方向相同,即X轴向右为正,Y轴向下为正。
7. 如果将显示模式改为MM_ISOTROPIC,那么X轴单位和Y轴单位一定相同,感兴趣的读者可以自己使一下。
(二) 建立以视窗中心为原点的坐标
用如下代码:
void CTtView::OnDraw(CDC* pDC)
{
CTtDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetViewportOrg(rect.right/2,rect.bottom/2);
pDC->SetViewportExt(rect.right,rect.bottom);
pDC->SetWindowOrg(0,0);
pDC->SetWindowExt(1000,-1000);
pDC->MoveTo(150,150);
pDC->LineTo(-150,-200);
pDC->LineTo(150,-150);
pDC->LineTo(150,150);
}
代码分析:
1. 用 pDC->SetViewportOrg(rect.right/2,rect.bottom/2); 设置视口的原点。
2. 用pDC->SetViewportExt(rect.right,rect.bottom);和pDC->SetWindowExt(1000,-1000);来确定设备坐标和逻辑坐标的单位对应关系。
3. 因为逻辑窗范围和视口范围的符号不一致,纵坐标取反,所以Y轴向上为正。
- VC中坐标系的建立
- VC中坐标系的建立
- VC中坐标系的建立
- 详析VC中坐标系的建立
- 详析VC中坐标系的建立
- 详析VC中坐标系的建立zz
- 详析VC中坐标系的建立
- 详析VC中坐标系的建立
- 详析VC中坐标系的建立
- 详析VC中坐标系的建立
- VC中坐标系的建立 逻辑坐标,物理坐标,设备坐标
- VC中坐标系的建立 逻辑坐标,物理坐标,设备坐标
- VC中坐标系的建立 逻辑坐标,物理坐标,设备坐标
- VC中坐标系的建立 逻辑坐标,物理坐标,设备坐标
- 详析VC中坐标系的建立 ( 逻辑坐标及物理坐标( 设备坐标 ) )
- vc中建立非模态对话框的例子
- VC中建立程序的关联文件
- vc中建立非模态对话框的例子
- Pub生涯
- 关于重构
- 大学的信
- 基金转换——乾坤大挪移
- Oracle 9i 在Red Hat Linux 7.3下的安装
- VC中坐标系的建立
- EJB3持久化规范(第二章)
- SSH系列(三)--Hibernate进阶
- 【转载】编译器处理相关
- 给中国学生的第四封信——大学四年应该这么度过
- Windows XP sp2下Rational Rose 2003退出时报错"MEM_BAD_POINTER"的解决办法
- 项目经理培训
- 给中国学生的第五封信——你有选择的权利
- VFS 缓冲区缓存Buffer Cache实现原理剖析(2)