//坐标系统与影射模式
通过自定义映射模式 ,将客户窗口映射为 一个平面直角坐标系,即原点在客户区中心,
原点向左为 x轴负方向,原点向上为y轴正方向。在客户窗口绘制一条正弦曲线,幅度为客户区高度的一半,
显示 4个周期
//设置映射模式为 MM_ANISOTROPIC
pDC->SetMapMode(MM_ANISOTROPIC);
//设置窗口左上角坐标(-4*pi,2),放大1000倍,下同
pDC->SetWindowOrg(int(-4000*3.14), 2000);
//设置窗口度量--总大小
pDC->SetWindowExt(int (8000*3.14), -4000);
//获得客户区矩形
CRect rc;
GetClientRect(rc);
//设置视口左上角坐标
pDC->SetViewportOrg(0, 0);
//设置视口度量
pDC->SetViewportExt(rc.Width(), rc.Height());
//创建蓝色实线画画笔
CPen pen(PS_SOLID, 1, RGB(0, 0, 255)), pen1(PS_DASH, 1, RGB(128, 0, 0)),*pOldPen;
pOldPen = pDC->SelectObject(&pen);
pDC->MoveTo(int(-4000*3.14), 0);
for(double x = (-4*3.14); x <=0; x += 0.01)
{
pDC->LineTo(int (1000*x),int(1000*sin(x)));
}
for(x = 0; x <= 4*3.14; x += 0.01)
{
pDC->LineTo(int (1000*x), int (1000*sin(x)));
}
pDC->SelectObject(&pen1);
pDC->MoveTo(int(-4000*3.14), 0);
pDC->LineTo(int (4000*3.14), 0);
pDC->MoveTo(0, -2000);
pDC->LineTo(0, 2000);
//恢复设备上下文原有画笔
pDC->SelectObject(pOldPen);
pen.DeleteObject();
pen1.DeleteObject();