视口和窗口
本帖最后由 spongebobyey 于 2019-10-12 19:46 编辑理解什么叫做视口和窗口,这里就解决了.
都在此页:https://fishc.com.cn/forum.php?mod=forumdisplay&fid=255&typeid=420&typeid=420&filter=typeid&page=4
视口简单的就是说你眼睛能看到。
窗口就好比是一个世界,这里包括你所看到的就像一个包罗万象的容器。而视口只是呈现你能看到的,你能观察到的。
1.窗口 表示为一个世界
2.需要将逻辑坐标需要表示为设备坐标
3.逻辑-> 窗口设备->视口
SetMapMode(hdc,MM_LOMETRIC)//把窗口分为0.1毫米 视口基座标系在左上角的模式
传送门:https://fishc.com.cn/forum.php?mod=viewthread&tid=64573&extra=page%3D4%26filter%3Dtypeid%26typeid%3D420
SetViewportOrgEx
传送门:https://fishc.com.cn/forum.php?mod=viewthread&tid=64702&extra=page%3D4%26filter%3Dtypeid%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
页:
[1]