博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Windows程序设计》第5章
阅读量:4204 次
发布时间:2019-05-26

本文共 1074 字,大约阅读时间需要 3 分钟。

换算因子:xViewExt/xWinExt

MM_ISOTROPIC
将映像方式设定为MM_ISOTROPIC时,Windows使用与MM_LOMETRIC同样的窗口和视端口范围。
MM_ISOTROPIC模式下的SetViewportExtEx函数中,Windows将自动调整x与y的值,以确保X轴与Y轴逻辑坐标单位相同。Windows不会调整SetWindowExtEx。
逻辑坐标单位为1/16英寸:
SetMapMode(hdc, MM_ISOTROPIC);
SetWindowExtEx(hdc, 160 * GetDeviceCaps(hdc, HORZSIZE) / 254, 160 * GetDeviceCaps(hdc, VERTSIZE) / 254, NULL);
SetViewportExtEx(hdc, GetDeviceCaps(hdc, HORZRES), GetDeviceCaps(hdc, VERTRES), NULL);
视口范围设定为按像素计算的整个屏幕大小,窗口范围则必须设定为以1/16英寸为单位的整个屏幕大小。GetDeviceCaps以HORZSIZE和VERTSIZE为参数,传回以毫米为单位的设备尺寸。如果使用浮点数,将把毫米数除以25.4,转换为英寸,然后,再乘以16以转换为1/16英寸。但是,由于我们使用的是整数,所以先乘以160,再除以254。
换算因子的计算公式如下:
GetDeviceCaps(hdc, HORZRES) / (160 * GetDeviceCaps(hdc, HORZSIZE) / 254)
GetDeviceCaps(hdc, VERTRES) / (160 * GetDeviceCaps(hdc, VERTSIZE) / 254)
当逻辑坐标与设备坐标转换时,Windows将以此换算因子进行转换。
SetWindowExtEx与SetViewportExtEx仅用来改变换算因子。(改变逻辑坐标单位的尺寸)
MM_ANISOTROPIC
SIZE size;
SetMapMode(hdc, MM_LOENGLISH);
SetMapMode(hdc, MM_ANISOTROPIC);
GetViewportExtEx(hdc, &size); // size.cx = 1024,size.cy = -768
SetViewportExtEx(hdc, size.cx, -size.cy, NULL); // -size.cy 改变Y轴方向。

转载地址:http://ussli.baihongyu.com/

你可能感兴趣的文章
POJ 1166解题报告
查看>>
POJ 3006解题报告
查看>>
POJ 1163解题报告
查看>>
POJ 2954解题报告
查看>>
POJ 1590解题报告
查看>>
无法设置未定义或 null 引用的属性“innerHTML”
查看>>
如何使button自动填充table的单元格
查看>>
input标签下的常用功能
查看>>
HTML获取当前时间年月日时分秒等相关信息
查看>>
在IDEA中安装阿里校验代码规范的插件的方式和可能会用遇见的问题及解决方法
查看>>
规范的Java项目命名格式
查看>>
常见的验证码形式
查看>>
机器视觉课内实验:一种摄像机标定算法的编程实现(张正友)
查看>>
Serializable
查看>>
用css画笑脸
查看>>
如何用vue.js写购物车功能
查看>>
如何用HTML写三级菜单
查看>>
jquery
查看>>
mysql修改用户名及用户密码
查看>>
public,private,protected,default详解
查看>>