关于GDI绘图的新手说明
2010-04-23 09:09
232 查看
许多Windows编程书籍都谈到了关于这方面的内容,然而有些地方属于误导,有些则重点没有突出,使读者自己产生误解.我也在这上面吃过苦头.下面是我的个人简单总结:
1.窗口和视口
窗口:虚拟存在的一个屏幕,之所以引入这个概念,是Windows在绘图时,首先根据映射模式坐标系将图形绘制到虚拟的窗口中,然后将窗口中的内容映射到视口中.
视口:在屏幕上看到的视图客户区域.
2.设备坐标系和逻辑坐标系
设备坐标系:与视口对应,单位像素,x轴向右,y轴向下.(0,0)点始终显示在平面的左上角.
逻辑坐标系:与窗口对应.根据映射模式的不同,单位和坐标轴的方向都相应的不同.
默认的映射模式是(MM_TEXT),此时逻辑坐标系单位像素,同设备坐标系各方面都一致.
3.窗口原点和视口原点.
原点的坐标不一定是(0,0),这是最容易令人费解和误解的地方.一定不要以为原点坐标一定是(0,0).窗口原点和
视口原点两者映射对应.
默认情况下,两者的原点都在左上角.
4.SetViewportOrg()和SetWindowOrg()函数
这两个函数尽量不要一起用,除非你思维敏锐,否则会很混乱,我个人认为使用一个函数就能达到目的,我倾向于只使用SetViewportOrg().
SetViewportOrg(x,y),参数是设备坐标,将视口原点移至设备坐标系的(x,y).即将逻辑点(0,0)映射成设备点(x,y).
SetWindowOrg(x,y)参数是逻辑坐标,作用与上相反.
5.什么时候使用逻辑坐标和设备坐标
所有绘图函数都使用逻辑坐标.
通过鼠标获得的坐标,GetClientRect()等函数是设备坐标.
我也是初学,不对之处,请多指教~~
1.窗口和视口
窗口:虚拟存在的一个屏幕,之所以引入这个概念,是Windows在绘图时,首先根据映射模式坐标系将图形绘制到虚拟的窗口中,然后将窗口中的内容映射到视口中.
视口:在屏幕上看到的视图客户区域.
2.设备坐标系和逻辑坐标系
设备坐标系:与视口对应,单位像素,x轴向右,y轴向下.(0,0)点始终显示在平面的左上角.
逻辑坐标系:与窗口对应.根据映射模式的不同,单位和坐标轴的方向都相应的不同.
默认的映射模式是(MM_TEXT),此时逻辑坐标系单位像素,同设备坐标系各方面都一致.
3.窗口原点和视口原点.
原点的坐标不一定是(0,0),这是最容易令人费解和误解的地方.一定不要以为原点坐标一定是(0,0).窗口原点和
视口原点两者映射对应.
默认情况下,两者的原点都在左上角.
4.SetViewportOrg()和SetWindowOrg()函数
这两个函数尽量不要一起用,除非你思维敏锐,否则会很混乱,我个人认为使用一个函数就能达到目的,我倾向于只使用SetViewportOrg().
SetViewportOrg(x,y),参数是设备坐标,将视口原点移至设备坐标系的(x,y).即将逻辑点(0,0)映射成设备点(x,y).
SetWindowOrg(x,y)参数是逻辑坐标,作用与上相反.
5.什么时候使用逻辑坐标和设备坐标
所有绘图函数都使用逻辑坐标.
通过鼠标获得的坐标,GetClientRect()等函数是设备坐标.
我也是初学,不对之处,请多指教~~
相关文章推荐
- ionic新手教程第八课-(加更)从无到有说Ionic、绘图说明MVC-U-S
- 关于内存DC绘图防止屏幕闪烁说明
- 关于统计学中q-q图为什么正态分布是一条直线(R语言绘图说明)
- 关于内存DC绘图防止屏幕闪烁说明
- 关于统计学中q-q图为什么正态分布是一条直线(R语言绘图说明)
- 关于C#GDI绘图
- 关于CGContext与2D绘图的说明
- 关于c++/c#/java 多线程绘图问题说明
- 关于内存DC绘图防止屏幕闪烁说明(亦即双缓存技术) .
- 转---关于CGContext与2D绘图的说明
- 关于MFC使用GDI绘图的两个容易出错的问题
- 关于内存DC绘图防止屏幕闪烁说明
- 关于DockPageCaption的说明
- VS关于 _CRT_SECURE_NO_WARNINGS 警告说明
- 关于protocol buffers的简单说明
- 一个关于逆运动学的 CCD 和 PIK 算法的说明
- 关于volatile关键字的说明以及测试
- 关于Activiti多级审批自动绘图以及修改class方面的经验
- 关于cankao.com数据更新的说明
- 关于Extjs4开发笔记(二)的补充说明