关于GDI绘图的新手说明

来源:互联网 发布:西门子选型软件 编辑:程序博客网 时间:2024/06/06 05:19

许多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()等函数是设备坐标.

我也是初学,不对之处,请多指教~~