MM_ISOTROPIC映射方式

王朝百科·作者佚名  2010-01-04
窄屏简体版  字體: |||超大  

如果想要在使用任意的轴时都保证两个轴上的逻辑单位相同,则MM_ISOTROPIC映射方式就是理想的映射方式。这时,具有相同逻辑宽度和高度的矩形显示为正方形,具有相同逻辑宽度和高度的椭圆显示为圆。

当您刚开始将映射方式设定为MM_ISOTROPIC时,Windows使用与MM_LOMETRIC同样的视窗和视埠范围(但是,不要对此有所依赖)。区别在于,您现在可以呼叫SetWindowExtEx和SetViewportExtEx来根据自己的偏好改变范围了,然後,Windows将调整范围的值,以便两条轴上的逻辑单位有相同的实际距离。

一般说来,您可以用所期望的逻辑视窗的逻辑尺寸作为SetWindowExtEx的参数,用显示区域的实际宽和高作为SetViewportExtEx的参数。Windows在调整这些范围时,必须让逻辑视窗适应实际视窗,这就有可能导致显示区域的一段落到了逻辑视窗的外面。必须在呼叫SetViewportExtEx之前呼叫SetWindowExtEx,以便最有效地使用显示区域中的空间。

例如,假设您想要一个「传统的」单象限虚拟坐标系,其中(0,0)在显示区域的左下角,宽度和高度的范围都是从0到32,767,并且希望x和y轴的单位具有同样的实际尺寸。以下就是所需的程式:

SetMapMode (hdc, MM_ISOTROPIC) ;

SetWindowExtEx (hdc, 32767, 32767, NULL) ;

SetViewportExtEx (hdc, cxClient, -cyClient, NULL) ;

SetViewportOrgEx (hdc, 0, cyClient, NULL) ;

如果其後用GetWindowExtEx和GetViewportExtEx函式获得了视窗和视埠的范围,可以发现,它们并不是先前指定的值。Windows将根据显示设备的纵横比来调整范围,以便两条轴上的逻辑单位表示相同的实际尺寸。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航