关于MFC的逻辑坐标与设备坐标映射模式的问题!
cleaf 2009-08-13 10:41:11 看了一下,感觉基本上没有哪本书讲的明白。
现在有几点疑问,请大家指教:
1:所有的绘图函数都是以逻辑坐标为参数,那么实际上必须转换为设备坐标(像素点)。
2:无论是MFC中的几种固定映射模式,还是自己定义,比如MM_TWIPS,实际上都是定义了一种将逻辑坐标转换为实际像素点位置的方法,公式中的参数可以自己定义,比如,
逻辑所标->设备坐标:
xViewport=(xWindow-xWinOrg)*(xViewExt/xWinExt)+xViewOrg 《1》
yViewport=(yWindow-yWinOrg)*(yViewExt/yWinExt)+yViewOrg 《2》
设备坐标->逻辑坐标:
xWindow=(xViewport-xViewOrg)*(xWinExt/xViewExt)+xWinOrg 《3》
yWindow=(yViewport-yViewOrg)*(yWinExt/yViewExt)+yWinOrg 《4》
疑问:
xViewExt,xWinExt,这些量应该都是整型的,那么如果当xViewExt小于xWinExt的时候,《1》式这个比例因子就是一个小整数除以一个大整数,结果是零,那么所有逻辑坐标就都映射到了xViewOrg,这显然是错误的呀。
而且两个整形的量相除,即使分子大,也会有很大的误差,这个怎么办。
另外,为什么说MM_TWIPS是没有误差的映射,这个不理解,MM_TWIPS的xViewExt=96,xWinExt=1440,这个从逻辑坐标变成设备坐标的时候,96/1440不是等于零吗,所有的逻辑点都映射为xViewOrg了呀!