最近在学习《windows程序设计》,在数字时钟那里卡住了,就是这个SDI的映射模式,让我纠结了半个多月!!!看了网上的各种博客,帖子,发现都是各种复制粘贴,看得云里雾里的,经过自己的各种调试,终于理解了!或许,我理解的也不是十分透彻,也许有不足设置错误,希望大家批评指正!本人文笔十分差劲,还请大家多多包涵!
1.首先,不要被SetWindowOrgEx ,SetViewPortOrgEx,这两个函数所误解 ,从字面上看,好像是设置坐标原点,其实不然,这两个函数设置的是一种映射关系,设置的是两个基准点,也就是窗口基准点映射到视口基准点。
2.关于坐标系,以及坐标原点,设备坐标系的x轴永远指向右,y永远指向下,坐标原点永远(0,0),无论你怎样设置,这三要素永远不变!逻辑坐标系,默认x指向右,y指向下,
坐标原点(0,0),其中坐标原点(0,0)永远不变,不管你什么模式,而坐标系的方向虽映射模式变化,MM_TEX模式下,逻辑坐标x,y轴方向以及原点不可改变,MM_ISOTROPIC模式下,由SetWindowExtEx(hdc, wx,wy, NULL) ,SetViewportExtEx(hdc, vx, vy NULL)两个函数决定,若vx/wx为负数,则逻辑x轴向左,若vy/wy 为负数