映射模式:
GetClientRect(&rcClient); // 在改变模式以前是MM_TEXT,即逻辑单位等于像素单位
dc.SetMapMode(MM_ANISOTROPIC); // 以各向异性为例
dc.SetWindowExt(500, 500); // 指定逻辑窗口为500×500的逻辑单位
dc.SetViewportExt(rcClient.Width(), rcClient.Height()); // 指定设备视口为width×height的像素单位
// 完成后,x轴比例为(width/500) pixel / 1 lg,y轴比例为(height/500) pixel / 1 lg
dc.Ellipse(0, 0, 500, 500); // 所有的绘图输入的都是逻辑单位
窗口,视区:
CRect rcClient;
GetClientRect(&rcClient);
CPoint point(rcClient.Width() / 2, rcClient.Height() / 2);
CClientDC dc(this);
dc.SetMapMode(MM_LOENGLISH);
dc.DPtoLP(&point);
CPoint point(100, 100);
CClientDC dc(this);
dc.SetMapMode(MM_LOENGLISH);
dc.LPtoDP(&point);
目前处于MM_TEXT,接下来要在MM_HIMETRIC模式下画图,并且原点要在平面的左下角
CRect rcClient;
GetClientRect(&rcClient);
dc.SetViewportOrg(0, rcClient.Height);
dc.SetMapMode(MM_HIMETRIC);
网友评论