QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

资深鱼友Ⅱ

Rank: 9

积分
2184
查看: 198|回复: 0

[学习笔记] 《Windows SDK》028 自定义的映射模式

[复制链接]
最佳答案
375 
累计签到:183 天
连续签到:32 天
BngThea 发表于 2017-8-1 13:33:14 1980 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一 核心知识点
* 视口与窗口转换公式
令 X == 视口下的x坐标,Y == 视口下的y坐标, X0 == 视口下的原点x坐标, Y0 == 视口下的原点y坐标
   x == 视口下的x坐标,y == 视口下的y坐标, x0 == 视口下的原点x坐标, y0 == 视口下的原点y坐标
那么有:
X == (x - x0) × 映射水平比例 + X0
Y == (y - y0) × 映射垂直比例 + Y0

例如,当映射模式为MM_TEXT时,映射水平比例 == 映射垂直比例 == 1
再例如,当映射模式为MM_LOMETRIC时, 映射水平比例 == 映射垂直比例 = 0.1mm对应的像素个数

* 两种自定义灵活的映射模式 MM_ISOTROPIC 和 MM_ANISOTROPIC
MM_ISOTROPIC 为各向同性,表示对两个坐标轴xy进行同比例的缩放,从而保证xy方向的逻辑单位对应的设备尺寸一致
MM_ISOTROPIC 为各向异性,表示对两个坐标轴xy进行不同比例的缩放,从而让xy方向的逻辑单位可以分别对应的不同的设备尺寸

可以通过两个API函数来设置这两种映射模式下的xy轴缩放比例,其一般调用方式是
先调用 SetWindowExtEx 函数确定窗口的显示范围
再调用 SetViewportExtEx 函数来指定上述范围在客户区所占的比例
然后是绘图操作,绘图函数中的参数范围不可超越上述换算出来的整个客户区的尺寸

二 新API函数
* SetWindowExtEx(hdc, 100, 100, NULL)
该函数用于设置指定设备环境的窗口范围

第一个参数:指定的环境句柄
第二三个参数: 指定窗口的xy方向范围,逻辑单位
第四个参数:POINT结构指针,存放原先的窗口范围

* SetViewportExtEx(hdc, cxClient / 2, cyClient / 2, NULL)
该函数用于设置指定设备环境的视口范围

各参数含义同 SetWindowExtEx

一般配合 SetWindowExtEx 使用,并且其调用位置应在 SetWindowExtEx 之后

评分

参与人数 1鱼币 +3 收起 理由
小甲鱼 + 3

查看全部评分

本帖被以下淘专辑推荐:

楼层
跳转到指定楼层

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2017-12-19 06:22

快速回复 返回顶部 返回列表