设备坐标和逻辑坐标

详析VC中坐标系的建立                                        详析VC中坐标系的建立    bull77  建立一个合适的坐标系可以为我们的绘图带来很大的方便 。下面介绍一下如何在VC中建立我们想要的坐标系。  一 设备坐标逻辑坐标  设备坐标(Device Coordinate)又称为物理坐标(Physical Coordinate),是指输出设备上的坐标。通常将屏 阅读详情

要用到两个函数:

CDC::LPtoDP  将逻辑坐标转换为设备坐标

CDC::DPtoLP  将设备坐标转换为逻辑坐标

 

设备坐标(Device Coordinate)又称为物理坐标(Physical Coordinate),是指输出设备上的坐标。通常将屏幕上的设备坐标称为屏幕坐标。设备坐标用对象距离窗口左上角的水平距离和垂直距离来指定对象的位置,是以像素为单位来表示的,设备坐标的X轴向右为正,Y轴向下为正,坐标原点位于窗口的左上角。

  逻辑坐标(Logical Coordinate)是系统用作记录的坐标。在缺省的模式(MM_TEXT)下,逻辑坐标的方向和单位与设备坐标的方向和单位相同,也是以像素为单位来表示的,X轴向右为正,Y轴向下为正,坐标原点位于窗口的左上角。逻辑坐标和设备坐标即使在缺省模式下其数值也未必一致,除了在以下两种情况下:

  1. 窗口为非滚动窗口
  2. 窗口为滚动窗口,但垂直滚动条位于滚动边框的最上端,水平滚动条位于最左端,但如果移动了滚动条这两种坐标就不一致了。

  在VC中鼠标坐标的坐标位置用设备坐标表示,但所有GDI绘图都用逻坐标表示,所以用鼠标绘图时,那么必须将设备坐标转换为逻辑坐标,可以使用CDC 函数DPtoLP()将设备坐标转化为逻辑坐标,同样可以用LPtoDP()将逻辑坐标转化为设备坐标。

  
ScreenToClient
ClientToScreen实际上是转换一个参照物的概念,如ie客户区上一个button,相对于ie的坐标是(x, y)ie客户区相对于屏幕原点的坐标是(x0 , y0),那么buttonscreen坐标就是(x+x0, y+y0) ScreenToClientClientToScreen都假定坐标是设备坐标。

EX05C(EX05C是一个例子程序,只需看函数中的代码即可):

我们现在来看看逻辑坐标和物理坐标是怎么转换的。

void CEX05CView::OnInitialUpdate()

{

       CScrollView::OnInitialUpdate();

 

       // TODO: calculate the total size of this view

C++/MFC工程[5]——绘制矩形与椭圆 本文包含绘制矩形的两种方法、椭圆的绘制以及在绘制中,透明画刷的使用。 阅读详情

相关推荐

逻辑坐标设备坐标——全窗口坐标、屏幕坐标、客户区坐标的总结

Windows应用程序绘制图形时使用的是一种逻辑单位,每个逻辑单位的大小由映射模式决定,这个逻辑单位既可以与设备单位(屏幕或打印机上的一个像素点)相同,也可以是一种物理单位(如毫米),还可以是用户自定义的一种单位。在Windows应用程序中,只要与输出有关系,都要使用映射模式。   首先谈谈映射模式基本知识,当Windows应用程序在其客户区绘制图形时,必须给出在客户区的位置,其位置用xy

Sin_Geek成长の迹 6705

[MFC]逻辑坐标设备坐标

建立一个合适的坐标系可以为我们的绘图带来很大的方便。下面介绍一下如何在VC中建立我们想要的坐标系。 (1) 设备坐标(Device Coordinate)又称为物理坐标(Physical Coordinate)。设备坐标用对象距离客户区窗口左上角的水平距离垂直距离来指定对象的位置,是以像素为单位来表示的。 逻辑坐标(LogicalCoordinate)是系统用作记录的坐标

Love_Basketballer的博客 2321

VC++上机例题——画椭圆(图形方法总结)

1.创建一个默认的单文档应用程序Ex_Scale 2.在CEx_ScaleView::OnDraw函数中添加代码: void CEx_ScaleView::OnDraw(CDC* pDC) { CEx_ScaleDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CRect rectClient; GetClientRect(rectClient); //...

qq_42334384的博客 2066

VC的逻辑坐标设备坐标

 以前看了一点windows程序设计还有VC一点东西,对windows坐标系好像就是有一点迷惑.现在开始系统的学习MFC,又涉及到了这个问题,确实有些不解,于是搜到一些资料:  所谓设备坐标逻辑坐标只是相对的概念。     比如点pt(1000,1000),如果你认为他是     设备坐标,那么经过下变换,他就变成逻辑     坐标:      dc.DPtoLP(&pt);     如果你

nizainade的专栏 2292

逻辑坐标设备坐标的区别

备忘fromhttp://www.lzu.edu.cn/netteach/jiaochen/vc++5.0/vc++5.0/chap7/chap7_3.htm在Windows中,文档坐标系称作逻辑坐标系,视图坐标系称为设备坐标系。它们之间的关系如下图所示:图7-11文档坐标视图坐标 在视图滚动后,如果用户在视图中单击鼠标,那么会得到鼠标位置的设备(视图)坐标。在使用这个数据处

eulb的专栏 1668

MFC-设备坐标逻辑坐标

MFC-设备坐标逻辑坐标 2009-04-07 15:28 Windows应用程序绘制图形时使用的是一种逻辑单位,每个逻辑单位的大小由映射模式决定,这个逻辑单位既可以与设备单位(屏幕或打印机上的一个像素点)相同,也可以是一种物理单位(如毫米),还可以是用户自定义的一种单位。在Windows应用程序中,只...

qq_41248447的博客 703

逻辑坐标设备坐标

原文地址:逻辑坐标设备坐标作者:我爱春秋 在Windows中,文档坐标系称作逻辑坐标系,视图坐标系称为设备坐标系。它们之间的关系如下图所示:   逻辑坐标按照坐标设置方式(又成为映射模式)可分为8种,它们在坐标上的特性如下表所示: 映射模式 逻辑单位 x递增方向 y递增方向 MM_TEXT 像素 向右 向下 MM_LOMETRIC

gucheng3116的专栏 762

关于逻辑坐标设备坐标的转换

关于逻辑坐标(LP - Logical Point)设备坐标(DP – Device Point)对于屏幕,逻辑坐标的原点在最左下角,让整个屏幕在坐标的第一象限。设备坐标是在输出设备上定点绘制图形对象是用的,它采用笛卡尔坐标系,原点在屏幕的最左上角,x的值自左向右增加,y自右向左增加,单位为像素(设备单位)。另外设备坐标是绝对的,逻辑坐标是...

weixin_34378767的博客 1691
上一篇: MFC中的类和Windows中的3种消息类型的关系
下一篇: 例解BITMAP的数据格式
pathuang68
博客等级 码龄18年 1821粉丝 194原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值