鱼C论坛

 找回密码
 立即注册
查看: 2078|回复: 0

[学习笔记] 视口和窗口

[复制链接]
发表于 2019-10-12 19:32:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
本帖最后由 spongebobyey 于 2019-10-12 19:46 编辑

理解什么叫做视口和窗口,这里就解决了.
都在此页:https://fishc.com.cn/forum.php?m ... r=typeid&page=4
视口简单的就是说你眼睛能看到。
窗口就好比是一个世界,这里包括你所看到的就像一个包罗万象的容器。而视口只是呈现你能看到的,你能观察到的。
1.窗口   表示为一个世界
2.需要将逻辑坐标需要表示为设备坐标
3.逻辑-> 窗口  设备->视口
   
     SetMapMode(hdc,MM_LOMETRIC)  //把窗口分为0.1毫米   视口基座标系在左上角的模式
     传送门:https://fishc.com.cn/forum.php?m ... peid%26typeid%3D420

SetViewportOrgEx   
    传送门:https://fishc.com.cn/forum.php?m ... peid%26typeid%3D420
      设置视口原点


坐标转换

LPtoDP  将指定的逻辑坐标转换为设备坐标
DPtoLP  将设备坐标转换为逻辑坐标

GetCurrentRect(hdc,&rect);
DPtoLP(hdc,(PPOINT)&rect,2);   

画sin
1.在本次中,由于已经转化为逻辑坐标0.1毫米
2.将基座标系设置在了左中

因此获取当前的rect图形其left和top都为0

当转化为逻辑坐标后
left和top都化为一半

转化方向

MM_ISOTROPIC 和MM_ANISOTROPIC

注意:
  1.应该先设置窗口的范围,在设置视口的范围
setWindowExtEx(hdc,100,100,NULL)  窗口逻辑上为100*100   该函数指定window的基座标
SetViewportExtEx(hdc,cxClient/2,cxClient/2,NULL) 窗口逻辑为200*200的窗口    该函数指定view的基座标

刚才没有把逻辑坐标转换为设备坐标,是因为没有设置窗口的逻辑坐标


xViewport=(xWindow-xWinOrg)*xViewExt/xWinExt+xVieworg
yViewport=(yWindow-yWinOrg)*yViewExt/xWinExt+yVieworg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-21 22:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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