|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
|
|