送大侠100分 !关于VC坐标变换 --- 求助

arfu 2000-03-29 11:09:00
各位高手:

我对VC的逻辑坐标和设备坐标的转换搞不懂。例如:

CRect r(0,0,200,200); (请问: 现在的r个参数是逻辑坐标,对吗?)

pDC->SetMapMode(MM_LOMETRIC); (每个逻辑坐标映射成 0.1 毫米)

pDC->Rectangle(r.left,-r.top,r.right,-r.bottom);

pDC->LPtoDP(r);

(请问:现在的r个参数是设备坐标(象素),对吗?)
pDC->Rectangle(r.left,-r.top,r.right,-r.bottom);

相对于电脑的显示器来说,设备坐标是象素,
对于毫米刻度尺,设备坐标是毫米,
我这样说对吗?
请高手耐心给我讲一下 DPtoLP 和 LPtoDP 执行前后图象的坐标变化情况?
非常感谢 100分送上
...全文
299 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
pcuil 2000-04-02
  • 打赏
  • 举报
回复
这其中的确有说不清的东西,翻译老外的话语,总不能让自己人有一个贴切的认识,具体的许多差别,只能说在使用的时候,不糊涂就行了,要说得非常透彻,不好说,但findy将映射模式说得很透。我要说得是,一般情况下,都是指逻辑坐标,这里头除了包含映射模式外,还指相对于父窗口得客户区左上角。至于设备坐标,主要指以象素为单位得度量值,比如屏幕为800*600。
goojuu 2000-04-02
  • 打赏
  • 举报
回复
first pay attention to the device coordinate and logic coordinate.
we can say we are using the logic coordinate in DC,
but when the map mode is TEXT ,logic and device coordinate is the same,pixel .device coordinate alwayse use pixel as his unit.but the
logic coordinate's unit is not the same according to the map mode.
We can image that we draw on a logic device which use logic coordinate.and the windows translate the logic map to the device .
if scroll,the showing area is part of your image window.
We can think now the showing area is a mask on the logic device.
So there is 3 kinds of space.the device space,the logic space,the
actrually showing space,i think.but we use the 2nd space,windows use
the 1st space,the eyes use the 3th space.:-)
sorry to reply with english.but now,the chinese input methord doesnot
work.
lpj 2000-04-01
  • 打赏
  • 举报
回复
逻辑坐标对应于不同的映射模式,每种映射有自己的逻辑坐标规则;设备坐标是以像素作为单位的;像mm。cm这些可以看成是物理坐标,程序是不理物理坐标的。
一般CDC的成员多使用逻辑坐标,CWnd的函数使用设备坐标,物理坐标你自己清楚就行了。
whongshu 2000-03-31
  • 打赏
  • 举报
回复
请查看一下有关API的书,很容易就懂的。
hustwjz 2000-03-30
  • 打赏
  • 举报
回复
DPtoLP 和 LPtoDP 执行前后图象的坐标变化情况?
有一个典型的例子讲述了DPtoLP 及LPtoDP的情况。DP是设备坐标,当窗口滚动时设备坐标不会改变,LP是逻辑坐标,当窗口滚动时,逻辑坐标会随滚动条的变化而改变。实际上DP和LP的问题一般没必要了解,除非你要自己编写程序支持屏幕滚动。
box 2000-03-30
  • 打赏
  • 举报
回复
转换取决于设备描述表(DC)的映射模式(MapMode)原点的设置以及窗口和视口的范围,详细情况请参看SetViewportExtEx, SetViewportOrgEx, SetWindowExtEx, SetWindowOrgEx.
findy 2000-03-30
  • 打赏
  • 举报
回复
CRect r(0,0,200,200); (请问: 现在的r个参数是逻辑坐标,对吗?)
r的参数与当前的映射方式有关系
1.如果当前映射模式为MM_TEXT(物理坐标)
r(0,0,200,200)表示200个像素长,200个像素宽
2.如果当前映射模式为(MM_LOMETRIC); (每个逻辑坐标映射成 0.1 毫米)
r(0,0,200,200)表示20mm长、20mm宽的矩形,在屏幕输出时,则为20mm长、20mm
宽的矩形。
总之:
r(0,0,200,200)*当前映射方式的比例(或者说换算单位)则为其大小。
换句话说:r(0,0,200,200)是一些数据,一些并没有单位的数值,其映射
方式会给出它的单位
不知你有没有明白!
arfu 2000-03-30
  • 打赏
  • 举报
回复
我对转换还是不懂,很多都是我的猜测的,请各位详细讲解

谢谢
Shania 2000-03-29
  • 打赏
  • 举报
回复
you ara right
Grace 2000-03-29
  • 打赏
  • 举报
回复
你不是已经很明白了吗?

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧