## 自定义二维坐标系
+ 图形从窗口显示到视区的过程叫映射。
+ 逻辑坐标的单位是物理尺度,设备坐标的单位是像素
+ MFC提供多种映射模型。默认为MM_TEXT。
+ MM_ANISOTROPIC模式的单位、方向、比例可以独立设置。
## 设置窗口范围函数 CDC::SetWindowExt
## 设置视区范围函数 CDC::SetViewportExt
## 设置视区坐标函数 CDC::SetViewportOrg
##获取客户区矩形信息 CWnd::GetClientRect
+ 在设置映射模式之前需要先获取客户区的矩形信息;
+ void GetClientRect( LPRECT lpRect ) const;
+ 参数为RECT结构体或CRect对象,用于接收客户区坐标。(可以不适用&运算符,自动使用)
//OnDraw()中
ASSERT_VALID(pDoc); //使指针有效
//p3自定义二维坐标系
//声明客户区矩形对象
CRect rect;
//获取客户区坐标,参数指向CRect对象 rect 来接收客户区坐标
GetClientRect(&rect);
//设置映射模式,选择MM_ANISOTROPIC,实现对x、y轴进行单独缩放
pDC->SetMapMode(MM_ANISOTROPIC);
//设置窗口范围,x、y取客户区的宽度和高度,且都为正
pDC->SetWindowExt(rect.Width(), rect.Height());
//设置视区范围,x、y取客户区的宽度和高度,y取负实现y轴垂直向上
pDC->SetViewportExt(rect.Width(), -rect.Height());
//设置坐标系原点,客户区中心
pDC->SetViewportOrg(rect.Width() / 2, rect.Height() / 2);
//移动rect,使得rect和客户区重合
rect.OffsetRect(-rect.Width(), -rect.Height());
//绘制坐标轴验证是否正确
//绘制x轴
pDC->MoveTo(rect.left, 0);
pDC->LineTo(rect.right, 0);
//绘制y轴
pDC->MoveTo(0, rect.bottom);
pDC->LineTo(0, rect.top);
//绘制文本
pDC->TextOutW(-20, -20, CString("O"));