SetWindowExtEx()与SetViewportExtEx()
2015-04-26 21:11
711 查看
在映射模式为
MM_ANISOTROPIC //即各向异性,在这种坐标方式下,X轴和Y轴的逻辑单位可以进行任意的缩放
和MM_ISOTROPIC // 即各向同性,在这种坐标方式下,X轴和Y轴的逻辑单位比例为1:1
时,需要由SetWindowExtEx或SetViewportExtEx函数来确定。
SetWindowExtEx函数对应逻辑坐标系(窗口),
SetViewportExtEx函数对应设备坐标系(视口)。
当映射模式为MM_ISOTROPIC时,
如果SetWindowExtEx或SetViewportExtEx函数的参数并不是按比例设置的,但其显示仍然是保持1:1的比例。
如:
这俩种情况下,显示的图形比例是相同的。
均如下图:
此时,哪个参数才起到决定性的作用呢?函数SetWindowExtEx中的参数是由按照比例较大的数值显示图形,
即
若SetWindowExtEx(hdc,400,100,NULL)按照标准设置
则为SetWindowExtEx(hdc,400,300,NULL),
而SetWindowExtEx(hdc,400,360,NULL)按照标准设置
则为SetWindowExtEx(hdc,480,360,NULL)。
另:
这俩种情况下,显示的图形比例也是相同的。
均如下图:
但与函数SetWindowExtEx不同的是SetViewportExtEx中的参数是由按照比例较小的数值显示图形,
即
若SetViewportExtEx(hdc,600,600, NULL)按照标准设置
则为SetViewportExtEx(hdc,600,450, NULL),
而SetViewportExtEx(hdc,600,300, NULL)按照标准设置
则为SetViewportExtEx(hdc,400,300, NULL)。
这俩个函数中的参数大小与窗口显示有什么关系呢?
SetWindowExtEx()函数,如前所说,用做记录显示的逻辑坐标,即可以理解成在一个逻辑的笛卡尔坐标系中,先把想要显示的图形绘制出来,由这个函数确定的坐标系然后通过SetViewportExtEx()函数将你绘制的图形按照预定的格式映射到窗口中(可以改变其坐标比例,图形大小等)。
因此,如果在SetViewportExtEx()函数中的参数保持不变时,SetWindowExtEx()函数中的参数越大,即你绘制的笛卡尔坐标系越大,而用于显示的设备坐标系不变,此时你想要显示的图形就会被相应的缩小;
同理,SetWindowExtEx()函数中的参数保持不变,SetViewportExtEx()函数中的参数越大,即你提供显示的设备坐标系越大,此时你想要显示的图形就会被相应的放大。
以上内容均为个人实践理解,如有错误,还望高手指正。
MM_ANISOTROPIC //即各向异性,在这种坐标方式下,X轴和Y轴的逻辑单位可以进行任意的缩放
和MM_ISOTROPIC // 即各向同性,在这种坐标方式下,X轴和Y轴的逻辑单位比例为1:1
时,需要由SetWindowExtEx或SetViewportExtEx函数来确定。
SetWindowExtEx函数对应逻辑坐标系(窗口),
SetViewportExtEx函数对应设备坐标系(视口)。
当映射模式为MM_ISOTROPIC时,
如果SetWindowExtEx或SetViewportExtEx函数的参数并不是按比例设置的,但其显示仍然是保持1:1的比例。
如:
(1) SetMapMode(hdc, MM_ISOTROPIC); SetWindowExtEx(hdc,400,*300*, NULL); SetViewportExtEx(hdc,600,450, NULL); (2) SetMapMode(hdc, MM_ISOTROPIC); SetWindowExtEx(hdc,400,*100*, NULL); SetViewportExtEx(hdc,600,450, NULL);
这俩种情况下,显示的图形比例是相同的。
均如下图:
此时,哪个参数才起到决定性的作用呢?函数SetWindowExtEx中的参数是由按照比例较大的数值显示图形,
即
若SetWindowExtEx(hdc,400,100,NULL)按照标准设置
则为SetWindowExtEx(hdc,400,300,NULL),
而SetWindowExtEx(hdc,400,360,NULL)按照标准设置
则为SetWindowExtEx(hdc,480,360,NULL)。
另:
(1) SetMapMode(hdc, MM_ISOTROPIC); SetWindowExtEx(hdc,400,300, NULL); SetViewportExtEx(hdc,600,450, NULL); (2) SetMapMode(hdc, MM_ISOTROPIC); SetWindowExtEx(hdc,400,300, NULL); SetViewportExtEx(hdc,600,600, NULL);
这俩种情况下,显示的图形比例也是相同的。
均如下图:
但与函数SetWindowExtEx不同的是SetViewportExtEx中的参数是由按照比例较小的数值显示图形,
即
若SetViewportExtEx(hdc,600,600, NULL)按照标准设置
则为SetViewportExtEx(hdc,600,450, NULL),
而SetViewportExtEx(hdc,600,300, NULL)按照标准设置
则为SetViewportExtEx(hdc,400,300, NULL)。
这俩个函数中的参数大小与窗口显示有什么关系呢?
SetWindowExtEx()函数,如前所说,用做记录显示的逻辑坐标,即可以理解成在一个逻辑的笛卡尔坐标系中,先把想要显示的图形绘制出来,由这个函数确定的坐标系然后通过SetViewportExtEx()函数将你绘制的图形按照预定的格式映射到窗口中(可以改变其坐标比例,图形大小等)。
因此,如果在SetViewportExtEx()函数中的参数保持不变时,SetWindowExtEx()函数中的参数越大,即你绘制的笛卡尔坐标系越大,而用于显示的设备坐标系不变,此时你想要显示的图形就会被相应的缩小;
同理,SetWindowExtEx()函数中的参数保持不变,SetViewportExtEx()函数中的参数越大,即你提供显示的设备坐标系越大,此时你想要显示的图形就会被相应的放大。
以上内容均为个人实践理解,如有错误,还望高手指正。
相关文章推荐
- Windows 程序设计 SetWindowExtEx SetViewportExtEx SetWindowOrgEx SetViewportOrgEx
- 【转载】GDI 映像方式 之 SetViewportExtEx 与 SetWindowExtEx 解析
- 关于SetWindowOrgEx、SetViewportOrgEx、SetViewportExtEx 和SetWindowExtEx 详解
- 【转载】关于SetWindowOrgEx、SetViewportOrgEx、SetViewportExtEx 和SetWindowExtEx 详解
- SetWindowExtEx 和SetViewportExtEx 的解释
- 对windows区域(Region)的操作,不受SetWindowExtEx和SetViewportExtEx的影响
- 特别篇-SetWindowExtEx,SetViewportExtEx解析
- windows编程中关于设置映象模式的四个函数SetWindowOrg SetViewPortOrg SetMapMode SetWindowExtEx SetViewPortExtEx
- 关于SetWindowOrgEx、SetViewportOrgEx、SetViewportExtEx 和SetWindowExtEx 详解
- WinAPI: SetWindowExtEx、SetViewportExtEx
- 关于SetWindowOrgEx、SetViewportOrgEx、SetViewportExtEx 和SetWindowExtEx 详解 .
- 放大缩小,只需要使用这2个函数:SetWindowExtEx、SetViewportExtEx
- 关于MM_ANISOTROPIC映射模式, 利用SetWindowExtEx和SetViewportExtEx函数设置Y轴方向的问题
- 关于SetWindowOrgEx、SetViewportOrgEx、SetViewportExtEx 和SetWindowExtEx 详解
- GDI 映像方式 之 SetViewportExtEx 与 SetWindowExtEx 解析
- GDI 映像方式 之 SetViewportExtEx 与 SetWindowExtEx 解析
- 对SetWindowExtEx、SetViewportExtEx调用的理解
- windows编程中关于设置映象模式的四个函数SetWindowOrg SetViewPortOrg SetMapMode SetWindowExtEx SetViewPortExtEx .
- SetWindowExtEx函数、SetViewportExtEx函数和SetWindowOrgEx函数
- setAliasTexParameters抗锯齿