作业帮 > 综合 > 作业

设备坐标到逻辑坐标的转换

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/30 01:40:43
设备坐标到逻辑坐标的转换
我在编程中在视频上通过鼠标点击画了一个矩形 画完要获取矩形的点在程序中进进行判断,鼠标点击获取的是设备坐标,判断中用到的是逻辑坐标,现在要转换,主要代码是:CClientDC ClientDC(this); POINT StartptA=Startpt; POINT EndptA=Endpt; ClientDC.DPtoLP(&StartptA); ClientDC.DPtoLP(&EndptA); 编译没有问题,但是运行后坐标并没有真正转换,
如果逻辑坐标与设备坐标不同,在构造 ClientDC后,需要设置它的逻辑坐标系,否则它是按MM_TEXT方式工作,这会使得DPtoLP没啥变化.
我一般是在重载的OnPrepareDC中处理设置逻辑坐标,这样在鼠标消息的函数中,得到ClientDC后,再调一下这个函数.
再问: 恩,应该是你说的原因,没有设置设备环境的映射方式,最后没办法,自己编了个坐标转换的函数
再答: 你也可以设置ClientDC的坐标映射呀,和OnDraw中一样的映射就行。这样就可以用ClientDC.DPtoLP了。
再问: 虽然我自己编了函数把问题解决了,但是关于这块要设置设备环境的映射模式还没有真正搞懂,我应该选取什么映射模式转换成的逻辑坐标才和我本身打开图像的逻辑坐标是一致的呢
再答: 你在绘制(OnDraw,或OnPaint)时,有没有调用过以下函数 SetMapMode SetViewportExt SetWindowExt 这几个函数就是用来设置设备坐标和逻辑坐标转换关系的
再问: 哦,明白了,你说的那几个我都没有用过,呵呵,编程比较菜,可以给个QQ号么??要是实在遇到问题过不去再请教你
再答: 1969382627