windows设备坐标系 逻辑坐标-。-

windows程序设计 谁能把视口与窗口解释清楚下_百度知道
windows程序设计 谁能把视口与窗口解释清楚下
,我看了下不太懂,不需要很长的文章,需要的是关键点,因为我想弄懂映射关系也就是WindowOrg和ViewportOrg的设置,别说逻辑坐标和设备坐标,我只求容易理解的。
提问者采纳
首先,视口基于设备坐标的,就是视口的(0,0)即对应设备坐标的(0,0)。窗口是基于逻辑坐标的,即窗口坐标(0,0)对应逻辑坐标(0,0)。在一般情况下,两者的原点重叠,只是量度单位不同。只是,在使用SetViewportOrgEx()函数或SetWindowsOrgEx()函数会分别改变两者的原点。直观一点,就是:SetViewportOrgEx()函数是客户区不动,原点坐标移动。SetWindowsOrgEx()函数是原点坐标不动,客户区移动。另外,映射方式的不同会使得两者的范围不同。如果还有不理解的话也很正常,分别使用SetViewportOrgEx()函数和SetWindowsOrgEx()函数设置坐标后,用TextOut()函数输出字符串。通过查看字符串在客户区的实际位置便可以稍微清晰的理解。
其他类似问题
windows程序设计的相关知识
其他1条回答
视口是一个逻辑概念就是你能看见的那部分窗口主要就是滚动条出现以后出现了区别那时窗口的一部分就是能看见的那部分被称为视口
等待您来回答
您可能关注的推广回答者:
下载知道APP
随时随地咨询
出门在外也不愁基于VC++的GDI常用坐标系统_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
30页1下载券30页1下载券30页2下载券24页1下载券6页免费 10页免费46页免费46页免费46页1下载券96页1下载券
喜欢此文档的还喜欢30页1下载券46页1下载券23页4下载券36页1下载券30页1下载券
基于VC++的GDI常用坐标系统|在​W​i​n​d​o​w​s​应​用​程​序​中​,​只​要​进​行​绘​图​,​就​要​使​用​G​D​I​坐​标​系​统​。​W​i​n​d​o​w​s​提​
​
​供​了​几​种​映​射​方​式​,​每​一​种​映​射​都​对​应​着​一​种​坐​标​系​。​例​如​,​绘​制​图​形​时​,​必​须​给​出​图​形​各​个​点​在​客​户​区​的​位​
​
​置​,​其​位​置​用​x​ ​和​y​两​个​坐​标​表​示​,​x​ ​表​示​横​坐​标​,​y​表​示​纵​坐​标​。​在​所​有​的​G​D​I​绘​制​函​数​中​,​这​些​坐​标​使​用​
​
​的​是​一​种​“​逻​辑​单​位​”​。​当​G​D​I​函​数​将​结​果​输​出​送​到​某​个​物​理​设​备​上​时​,​W​i​n​d​o​w​s​将​逻​辑​坐​标​转​换​成​设​备​坐​标​
​
​(​如​屏​幕​或​打​印​机​的​像​素​点​)​。​本​文​讨​论​了​图​形
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
2014下半年教师资格证统考大备战
你可能喜欢c++绘制坐标_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者贡献于
评价文档:
1页免费8页1下载券8页免费11页1下载券1页免费 2页免费2页免费6页2下载券
喜欢此文档的还喜欢26页2下载券5页免费33页免费84页1下载券3页免费
c++绘制坐标|
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:25.20KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢& & & & & & & & & & & & & & & & & & & & & & Windows编程中的映射模式和坐标转换 &&
一、Windows中的映射模式 &&
1、Windows定义映射模式的目的 &&
经过我的综合,Windows定义映射模的目的又以下几个方面:1、不同人的使用习惯。不同国家的,不同地区,以及不同的人因为习惯喜欢用不同的度量单位,有的人人喜欢用英寸,而有的人喜欢用公制中的厘米,毫米等。其他的人又喜欢用另外一些单位。、2、使软件与硬件向分离开来。让开发的软件能够最大限度的与硬件无关。3、提供逻辑和物理的一种转换。就相当于银行的利率。 &&
2、默认的映射模式 &&
默认的映射模式使MM_TEXT,它使以象素为单位的。X轴向左为正,Y轴向下为正。默认的坐标原点在左上角。 &&
3、固定比例映射模式 &&
固定比例的映射模式有MM_LOMETRIC、MM_HIMETRIC、MM_LOENGLISH、MM_HIENGLISH、MM_TWIPS种。它们默认的坐标原点都使在左上角。其区别在于每一个逻辑单位对应的物理大小不一样。所对用的逻辑单位分别为0.1毫米,0.01毫米,0.01英寸,0.001英寸,1/1440英寸(0.0007英寸)。 &&
4、可变比例映射模式 &&
对于可变比例的映射模式用户可以自己定义一个逻辑单位代表的大小,其大小可以任意。也可以让这个大小随环境改变而改变。有MM_ISOTROPIC,MM_ANISOTROPIC这两种映射模式。其逻辑单位的大小等于视口范围和窗口范围的比值。两者的不同在于前者要求X轴和Y轴的度量单位必须相同,而后者没有这样的限制。 &&
二、Windows中的几种坐标体系 &&
1、屏幕坐标 &&
屏幕坐标描述物理设备(显示器、打印机等)的一种坐标体系,坐标原点在屏幕的左上角,X轴向右为正,Y轴向下为正。度量单位是象素。原点、坐标轴方向、度量单位都是不能够改变的。 &&
2、设备坐标(又称物理坐标) &&
设备坐标是描述在屏幕和打印机显示或打印的窗体的一种坐标体系。默认的坐标原点是在其客户区的左上角。X轴向右为正,Y轴向下为正。度量单位为象素。原点和坐标轴方向可以改变,但是度量单位不可以改变。 &&
3、逻辑坐标 &&
逻辑坐标是在程序中控制显示,打印使用的坐标体系。该坐标系与定义的映射模式密切相关。默认的映射模式是MM_TEXT。我们可以通过设置不同的映射模式来改变该坐标体系的默认行为。 &&
三、逻辑坐标和设备坐标之间的转换 &&
现有如下代码: &&
void & CMapModeView::OnPaint() & &&
CPaintDC & dc(this); & &&
//获取设备类的设置 &&
CPoint & ptOrgView,ptOrgW &&
CSize & sizeView,sizeW &&
CString & strM &&
ptOrgView=dc.GetViewportOrg();//获取视口原点 &&
ptOrgWindow=dc.GetWindowOrg();//获取窗口原点 &&
sizeView=dc.GetViewportExt();//获取视口范围 &&
sizeWindow=dc.GetWindowExt();//获取窗口范围 &&
strMsg.Format(_T( &Viewport & Extent:(%d,%d),\tViewport & Org:(%d,%d)\tWindow & Extent:(%d,%d)\tWindow & Org(%d,%d) &), &&
sizeView.cx,sizeView.cy,ptOrgView.x,ptOrgView.y, &&
sizeWindow.cx,sizeWindow.cy,ptOrgWindow.x,ptOrgWindow.y); &&
TRACE( &%s\n &,strMsg); &&
//设置映射模式以及原点 &&
dc.SetMapMode(MM_TEXT);//设置映射模式 &&
dc.SetWindowOrg(100,100);//设置窗口的坐标原点 &&
dc.SetViewportOrg(200,200);//设置视口的坐标原点 &&
dc.SetWindowExt(5,10);//改语句仅对可变比例映射模式有效 &&
dc.SetViewportExt(1,1);//同上 &&
ptOrgView=dc.GetViewportOrg(); &&
ptOrgWindow=dc.GetWindowOrg(); &&
sizeView=dc.GetViewportExt(); &&
sizeWindow=dc.GetWindowExt(); &&
strMsg.Format(_T( &Viewport & Extent:(%d,%d),\tViewport & Org:(%d,%d)\tWindow & Extent:(%d,%d)\tWindow & Org(%d,%d) &), &&
sizeView.cx,sizeView.cy,ptOrgView.x,ptOrgView.y, &&
sizeWindow.cx,sizeWindow.cy,ptOrgWindow.x,ptOrgWindow.y); &&
TRACE( &%s\n &,strMsg); &&
//将点(300,400)从逻辑坐标体系映射到设备坐标体系。 &&
CPoint & ptM &&
ptMap=CPoint(300,400); &&
dc.LPtoDP(&ptMap); &&
strMsg.Format(_T( &The & Orginal & Point(In & LP):CPoint(300,400),Convert & to & DP & is:CPoint(%d,%d) &), &&
ptMap.x,ptMap.y); &&
TRACE( &%s\n &,strMsg); &&
//将点(300,400)从设备坐标体系映射到逻辑坐标体系 &&
ptMap=CPoint(300,400); &&
dc.DPtoLP(&ptMap); &&
strMsg.Format(_T( &The & Orginal & Point(In & DP):CPoint(300,400),Convert & to & LP & is:CPoint(%d,%d) &), &&
ptMap.x,ptMap.y); &&
TRACE( &%s\n &,strMsg); &&
以上代码最后调试输出结果为: &&
Viewport & Extent:(1,1), & Viewport & Org:(0,0) & Window & Extent:(1,1) & Window & Org(0,0) &&
Viewport & Extent:(1,1), & Viewport & Org:(200,200) & Window & Extent:(1,1) & Window & Org(100,100) &&
The & Orginal & Point(In & LP):CPoint(300,400),Convert & to & DP & is:CPoint(400,500) &&
The & Orginal & Point(In & DP):CPoint(300,400),Convert & to & LP & is:CPoint(200,300) &&
按照MSDN上,函数SetWindowOrg(x,y)设定设备坐标下的点(x,y)对应于逻辑坐标的原点。SetVieportOrg(x,y)设定逻辑坐标下点(x,y)对应逻辑坐标的原点。而实际上如果同时设置了逻辑坐标和设备坐标原点的话,那么以上的说法是错误的。 &&
在默认映射模式MM_TEXT下,一个逻辑单位对应于设备坐标下的一个象素。改变默认原点以后的坐标体系如下图所示: &&
(0,0) & & & & & & & & & & & & & & Dx,Lx & & & & & & & (0,0) & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&
(100,100) & & & & & & & & & & & & & & & & & & & & & & Lx &&
(200,200) & & & & & & & & & & & & & & & & & & Dx &&
& .(300,400) &&
Dy,Ly & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & Ly & & Dy &&
在VC中坐标系的转换和数学中的数学转化是不一样的。在这里是以距离为标准。首先看一下如何把点(300,400)如何从设备坐标转换成逻辑坐标。 &&
在设备坐标体系下,点(300,400)与Y轴的距离为100个逻辑单位。那么所对应的逻辑坐标也要满足与逻辑坐标Y轴的距离为100个单位。又1个逻辑单位对应1个象素。所以所对应的设备坐标的X值为100+100=200。同样可以出对应的逻辑坐标的Y值为300。 &&
按照同样的方法,我们也可以把逻辑坐标下的点(300,400)转换成设备坐标。在逻辑坐标下,点(300,400)与逻辑坐标Y轴的距离为200。那么在设备坐标体系,相应的设备坐标与设备坐标Y轴的距离也要为200。又1个逻辑单位对应1个象素,所以对应的设备坐标X值为200+200=400。同样的道理,可以求出对应的设备坐标Y值为500。 &&
在这里,因为逻辑单位和设备单位一一对应,也可以把这个问题看作一个很简单的坐标平移问题来看。其结果是很显然的。 &&
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:154138次
积分:2653
积分:2653
排名:第4723名
原创:102篇
转载:103篇
评论:32条
(1)(1)(1)(1)(4)(2)(2)(1)(1)(2)(1)(2)(8)(4)(7)(52)(12)(49)(53)(1)来源:《软件导刊》2008年第06期 作者:何西华;顾小丰;
坐标变换技术在Windows GDI设计中的应用
0引言当Windows应用程序在窗口客户区绘制图形时,必须给出在客户区的位置,其位置用x和y两个坐标表示,x表示横坐标,y表示纵坐标。在所有的GDI绘制函数中,这些坐标使用的是一种“逻辑坐标”。当GDI函数将输出送到某个物理设备上时,Windows将逻辑坐标转换成“设备坐标”。逻辑坐标到设备坐标的转换过程称为“坐标变换”。这种变换是由映射模式、窗口和视口的原点以及窗口和视口的范围所决定的。1Windows中的坐标系统1.1逻辑坐标(Logical Coordinates)逻辑坐标是独立于设备的,它与设备点的大小无关。使用逻辑坐标,是实现“所见即所得”的基础。一个逻辑单位的大小由映射模式决定,这个逻辑单位既可以与设备单位(屏幕像素点或打印机上的一个点)相同,也可以是一种物理单位,还可以是用户自定义的一种单位。1.2设备坐标(Device Coordinates)设备坐标又称为物理坐标(Physical Coordinate),是指输出设备上的坐标,与具体设备相关。Window系统包括3种设备坐标:屏幕坐标、全窗口坐标、客户区坐标。其中以客户区坐标最为常用。所......(本文共计3页)
相关文章推荐
《航空精密制造技术》2009年03期
《仪器仪表用户》2006年06期
《公路与汽运》2006年05期
《吉林大学学报(工学版)》2008年03期
《系统仿真学报》2008年03期
《公路交通科技》2005年04期
《汽车技术》1987年09期
《塑性工程学报》2003年04期
《北京航空航天大学学报》2007年04期
《汽车技术》1985年12期
《贵州工业大学学报(自然科学版)》2006年02期
《计算机工程与应用》2009年31期
《振动工程学报》2010年02期
《汽车技术》1986年07期
《机床与液压》2005年01期
《电光与控制》2007年06期
《湖南大学学报(自然科学版)》1985年04期
《汽车技术》1985年05期
《机械》2007年08期
《农业机械学报》2007年09期
主办:湖北省信息学会
出版:软件导刊杂志编辑部
出版周期:月刊
出版地:湖北省武汉市

我要回帖

更多关于 极坐标 的文章

 

随机推荐