映射模式问题,把我弄晕了
TOUT 2011-08-10 01:34:17 对于所有映射模式,Windows都用下面两个公式将窗口坐标转换成视口坐标:
xViewport=(xWindow-xWinOrg)*(xViewExt/xWinExt)+xViewOrg
yViewport=(yWindow-yWinOrg)*(yViewExt/yWinExt)+yViewOrg
其中,(xWindow,yWindows)是待转换的逻辑点,(xViewport,yViewport)是转换后的设备点。
我要对应到打印,如何转换坐标。把我弄晕了
OnPrint(CDC* pDC,CPrintInfo* pInfo)
{
pDC->SetMapMode(MM_ANISOTROPIC);
CPoint ptOrgView,ptOrgWindow;
CSize sizeView,sizeWindow;
ptOrgView=dc.GetViewportOrg();//获取视口原点
sizeView=dc.GetViewportExt();//获取视口范围
ptOrgWindow=dc.GetWindowOrg();//获取窗口原点
sizeWindow=dc.GetWindowExt();//获取窗口范围
int xlog=pDC->GetDeviceCaps(LOGPIXELSX);
int ylog=pDC->GetDeviceCaps(LOGPIXELSY);
//再如何套用公式:(书上看的,变量不一样)
// xViewport=(xWindow-xWinOrg)*(xViewExt/xWinExt)+xViewOrg
如:xViewport=(sizeWindow.cx-?)*(sizeView.cx/xWindow.cx)+? 如何计算出来,带需要取哪些变量?
// yViewport=(yWindow-yWinOrg)*(yViewExt/yWinExt)+yViewOrg
//
pDC->SetViewportExt((int)xViewport,(int)yViewport);
}