//座標系統與影射模式
通過自定義映射模式 ,將客戶窗口映射爲 一個平面直角座標系,即原點在客戶區中心,
原點向左爲 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();