映像模式--发布日期:2008-07-19 16:54

来源:互联网 发布:淘宝 女装的退款率 编辑:程序博客网 时间:2024/05/22 10:57
经过一上午的研究,目前的体会是:
设备坐标就是你创建出来的窗口那个坐标,其原点始终在(0,0),即窗口左上角,
逻辑坐标就是你GDI函数(绝大部分)中使用的坐标,它是一个虚拟的"窗口",仅仅为了让你画图方便
使用了GDI函数后这里指定的逻辑坐标Windows在实际输出到窗口上时将其转换为设备坐标,这时映像模式派上用途了,
设置"窗口"坐标原点(逻辑坐标)方法:
1
C/C++ code
CRect rect; GetClientRect (&rect); dc.SetMapMode (MM_LOENGLISH); dc.SetViewportOrg (rect.Width () / 2, rect.Height () / 2);

2
C/C++ code
CRect rect; GetClientRect (&rect); CPoint point (rect.Width () / 2, rect.Height () / 2); dc.SetMapMode (MM_LOENGLISH); dc.DPtoLP (&point); dc.SetWindowOrg (-point.x, -point.y);

两种方法都是将"窗口"坐标(逻辑坐标)原点设置为客户区中央,但是需要注意的是在使用SetWindowOrg时坐标值必须是逻辑坐标,因此需要dc.DPtoLP (&point),而在使用SetViewportOrg时则不需,因为这个函数使用的坐标值是设备坐标值。

总结:设置逻辑坐标原点用SetViewportOrg最好,其中指定的x,y即是最后逻辑坐标原点的值,在这个基础上使用GDI函数即是。
原创粉丝点击