Window and Viewport

来源:互联网 发布:淘宝店美妆图片素材 编辑:程序博客网 时间:2024/06/06 06:53

1.在Windows程序设计时,面对屏幕的实际上存在3个坐标系,第一个是以整个屏幕建立坐标系,第二个是以窗口为坐标系,

   第三个是以客户区为坐标系,这三个坐标系都是以像素为基本单位,(0,0)点都分别在各个对象的左上角,x轴递增方向

   向右,y轴递增方向左。这是固定不变的,这些坐标统称为   设备坐标  。

 

2.如果只有设备坐标的话,这将对画图有点不方便,比如,我想画一个2厘米为边长的正方形。这需要多少个像素才是2厘米呢?

   这必然要经过取得设备的某些属性进行计算。为了解决以上问题出现了逻辑坐标。对于GDI函数,其表示坐标的参数基本是使

   用 逻辑坐标的。映射模式 是 决定 逻辑坐标到 设备坐标的转换,Windows为我们预置了几种与映射模式。例如,

   MM_LOMETRIC这将使GDI函数的坐标参数,以0.1毫米为基本单位,调用函数rectangle(0,0,200,200),就画出

   了一个2厘米的正方形。

 

3.3个设备坐标原点的位置的固定不动的,逻辑坐标的原点是可以移动的。

   以下说明一种特殊情况:

   当在取得设备内容,还没有释放时,使用了SetViewportOrgEx(hdc,x1,y1)函数----参数是设备坐标,这是就把逻辑坐标

   的原点映射到x1,y1位置,这时设备内容还没被释放哦,继续使用SetWindowOrgEx(hdc,x2,y2)-----参数是逻辑坐标

   (SetWindowOrgEx的功能是会把x2,y2映射到设备坐标的(0,0)点),但以上情况不一样啊,SetWindowOrgEx会以

    SetViewportOrgEx设置的点(x1,y1)代替(0,0)点,把逻辑坐标(x2,y2)映射到设备坐标(x1,y1)。设备坐标

   是不变的。

    一般情况下,只是用SetViewportOrgEx,SetWindowOrgEx中的一个就够了,用两个反而会混乱。

原创粉丝点击