澳门新蒲京娱乐


【澳门新蒲京娱乐】音频视频格式转换,Android的FFMPEG使用之命令行
澳门新蒲京娱乐 2
编写简单的多级菜单

逻辑坐标,Windows映射模式

近来在学Win3二的编制程序,看的是《Windows程序设计第4版》壹书,那本书是云南人翻译的,有个别译法和陆地不一致,书中还有一对指鹿为马的地方,很多时候必要中国和英国文对照阅读,下载请点击

Windows应用程序绘制图形时选用的是一种逻辑单位,每种逻辑单位的轻重由映射方式决定,
那几个逻辑单位既能够与设施单位(显示器或打字与印刷机上的叁个像素点)相同,也能够是一种物理单
位(如分米),还足以是用户自定义的1种单位。在Windows应用程序中,只要与输出有提到,都
要使用映射方式。本文的目标是扶持读者精晓映射情势的有的基本知识,并对在选择中时常
现身的局地难题提出化解方案。

1、映射情势基本知识
当Windows应用程序在其客户区绘制图形时,必须提交在客户区的职位,其地方用x和y
多少个坐标表示,x表示横坐标,y表示纵坐标。在具备的GDI绘制函数中,那个坐标使用的是壹种”逻辑单位”。当GDI函数将出口送到有个别物理设备上时,Windows将逻辑坐标
转换来设备坐标(如荧屏或打字与印刷机的像素点)。逻辑坐标和设备坐标的转换是由映射方式决
定的。映射方式被储存在装置条件中。GetMapMode函数用于从设备条件得到当前的映照情势,SetMapMode函数用于安装设备条件的映照格局。
1.逻辑坐标

好了,上面开始正文:

逻辑坐标是独立于设备的,它与设备点的大大小小毫无干系。使用逻辑单位,是贯彻”所见即所得”的底蕴。当程序员在调用二个画线的GDI函数LineTo,画出二伍.四mm(一英寸)
长的线时,他并不必要考虑输出的是何种设备。若设备是VGA显示器,Windows自动将其转会为九多少个像素点;若设备是1个300dpi的激光打字与印刷机,Windows自动将其转化为300个像素点。

在看到GDI(GDI Graphic Device
Interface图形设备接口)
炫耀格局那1节的时候,书中又是逻辑坐标,又是设备坐标,又是视口,窗口,又是视埠什么的,搞得人头都大了。固然本人现在还未有完全读懂,可是笔者觉得作者已经抓住了明白那么些事物的主线,下边包车型大巴事物就视作自身的笔记吧:

二.设备坐标

一.逻辑坐标和配备坐标

Windows将GDI函数中钦赐的逻辑坐标映射为设备坐标,在全数的装置坐标系列中,单位以像素点为准,水平值从左到右增大,垂直值从上到下增大。

 
 首先,逻辑坐标那么些名词就让很三人触目惊心,确实,不可能“断章取义”地精晓的翻译就不是好翻译 
 ——周樟寿。哈哈,开个噱头,大家要明白那七个东西,首先要想到假使您要用Win3二要绘制三个事物,该怎么办吧?比如绘制一个矩形,借使大家调用的是Rectangle(hdc,30,20,50,80),(这几个函数的用法是Rectangle(hdc,left,top,right,bottom),笔者叫雷正兴,不用谢作者)。能够观察,跟很多GDI函数1样,那个函数里面使用了好多数字,坐标。让大家纪念一下小学文化,绘制二个东西,不仅应当搞通晓她的长度,还相应搞通晓他的单位,那么那里的30,20,50,80的单位是怎样吗?很三个人会说,是像素!那一个答案是对的,可是又不全对。事实上,Windows暗许的照耀格局(Mapping
Mode,简称就是MM)是MM_TEXT,在MM_TEXT映射格局(TEXT实际上跟文字未有多大关系,是那种映射格局下的坐标方向,从左到右,从上到下,跟文字阅读方式相同)下,那几个单位确实是像素。实际上,逻辑坐标和装备坐标的分别就在于他们的单位不均等!

Windows中总结以下三种装备坐标,以满意各个不相同需求:

上边大家拿出三个公式

(一)客户区域坐标,包罗应用程序的客户区域,客户区域的左上角为(0,0)。

         
 澳门新蒲京娱乐 1

(二)荧屏坐标,包含整个荧屏,显示屏的左上角为(0,0)。显示器坐标用在WM_MOVE音讯中(对于非子窗口)以及上面的Windows函数中:CreateWindow和MoveWindow(都对此非子窗口)、GetMessage、GetCursorPos、GetWindowRect、WindowFromPoint和SetBrushOrg中。用函数ClientToScreen和ScreenToClient能够将客户区域坐标转换来显示屏区域坐标,或反之。

要讲上边的公式,就要先说一下视口(Viewport 山西译作视埠)和窗口(Window
江苏译作视窗)

(叁)全窗口坐标,包含三个顺序的万事窗口,包蕴标题条、菜单、滚动条和窗口框,窗口的左上角为(0,0)。使用GetWindowDC得到的窗口设备条件,能够将逻辑单位转换到窗口坐标。

首先,不要被那多少个名字吸引了,那三个坐标是跟映射有关的,跟显示器坐标系,窗口坐标系,客户端坐标系是相对独立的七个文化。

叁.逻辑坐标与设备坐标的转换格局

实在公式拿出去,学数学的同伙是或不是就懂了大半了,这一个公式卓殊重要,通晓了那个公式,后边的重重东西就能精晓,首先,公式中的Window,WinOrg,WinExt,就是带了Win的东西,就是使用的逻辑坐标的值,就跟GDI函数中的一样,逻辑坐标的单位可能是像素(MM_TEXT映射)、毫米(单位是0.1mm,在MM_澳门新蒲京娱乐 ,LOMETCRUISERIC映射下)等等等等(看下图).

炫耀格局定义了Windows怎么着将GDI函数中钦点的逻辑坐标映射为装备坐标。要接二连三研商映射格局大家要介绍Windows有关映射情势的局地术语:大家将逻辑坐标所在的坐标系称为”窗口”,将设备坐标所在的坐标系称为”视口”。

澳门新蒲京娱乐 2

“窗口”正视于逻辑坐标,能够是像素点、分米或程序员想要的其它标准化。

身为大家在调用Win3二函数绘图的时候,要明了本人使用的单位(依照映射方式分明的)。因为绘图函数里的数值,使用的正是那个单位,即使默许的MM_TEXT映射格局应用的单位尽管像素,然而过多时候任何单位也很有用,比如您要做三个荧屏尺子的时候,你要用尺子量一下物体有几分米。尺子上的刻度就足以用别样的照耀方式来画。可是荧屏在展现的时候却无法只通晓逻辑坐标几分米啊,荧屏得了解具体的像素地点才行啊!那那一年,就须求利用上边的公式转换了。讲到那里,公式里的ViewExt/WinExt是什么样看头就很明朗了。这正是在当下逻辑坐标系下(比如几分米,打比方哈),实际上是地点映射情势表格里的单位)对应的配备坐标应该是稍微个像素!那样转换之后,得到实际的Viewport,正是该逻辑点在荧屏上的职位。

“视口”重视于设备坐标(像素点)。平时,视口和客户区域等同。可是,若是程序员用GetWindowDC或CreateDC获取了2个装备条件,则视口也能够指全窗口坐标或荧屏坐标。点(0,0)是客户区域的左上角。x的值向右扩大,y的值向上增添。

所以说视口和窗口实际上是代表的1样块区域,只可是是因为单位和原点的不相同,需求展开映射,逻辑单位便是窗口,正是Window,便是像素,分米,英寸,就是给人用的单位,正是装备非亲非故的单位,设备单位正是视口,正是Viewport,就只可以是像素,正是给设备用的单位,鲜明的1毫米,在差别的设备上的像素数可能会有分别,所以是装备相关的单位。

对此持有映射方式,Windows都用上边八个公式将窗口坐标转换到视口坐标:

 

  1. xViewport = (xWindow – xWinOrg) * (xViewExt / xWinExt) + xViewOrg
  2. yViewport = (yWindow – yWinOrg) * (yViewExt / yWinExt) + yViewOrg

要注意的是在上述的伍映射形式下,ViewExt/WinExt的比重都以早就鲜明了,不能够改变的,如若要转移四个值,只可以在MM_ISOTROPIC和MM_ANISOTROPIC映射方式下行使SetViewportExtEx()和SetWindowExtEx()更改。而且那七个函数在上边5种炫耀形式下无效。

内部,(xWindow,yWindows)是待转换的逻辑点,(xViewport,yViewport)是更换后的设备点。借使设备坐标是客户区域坐标或全窗口坐标,则Windows在画多少个对象前,还非得将这几个坐标转换成显示屏坐标。

末尾,这一个映射格局,视口原点(ViewOrg),窗口原点(WinOrg)等,都是装备内容(DC
Device
Context,又译作装置内容、设备上下文等)的性子,设备内容实在正是您绘制的区域。有两种BeginPaint(在WM_PAINT时绘制无效区域),GetDC是客户端区域(在更新时绘制整个客户区域),GetWindowsDC是任何窗口区域(能够绘制包含窗口标题栏,菜单栏区域)。那个知识细讲的话又是另一篇博客了

那多个公式使用了各自钦赐窗口和视口原点的点:(xWinOrg,yWinOrg)是逻辑坐标的窗口原点;(xViewOrg,yViewOrg)是设备坐标的视口原点。在缺省的装置条件中,那三个点均安装为(0,0),但它们得以转移。此公式意味着,逻辑点(xWinOrg,yWinOrg)总被映射为设备点(xViewOrg,yViewOrg)。

 

Windows还能够将视口(设备)坐标转换为窗口(逻辑)坐标:

 

  1. xWindow=(xViewport-xViewOrg)*(xWinExt/xViewExt)+xWinOrg
  2. yWindow=(yViewport-yViewOrg)*(yWinExt/yViewExt)+yWinOrg

由此只要记住开头的公式,获得不错的呼应的参数,就可以画出必要的图样。

能够选拔Windows提供的五个函数DPtoLP和LPtoDP在装置坐标及逻辑坐标之间互相转换。

 

4.映射情势的类别

Windows定义了表一所列出的八种炫耀格局。

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图