All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
开发环境下优化SQl语句的十个重要步骤_mssql学习_编程技术
C#MD5算法_[Asp.Net教程]
详细介绍PHP动态网页技术中SESSION的应用_php资料_编程技术
md5加密代码示例_[Asp.Net教程]
利用PHP代码实现网页自动判断转向_[PHP教程]
C#闪烁问题解决方法_.net资料_编程技术
如何在SQL Server中对行进行动态编号_[SQL Server教程]
如何使PHP文件与HTML代码更好的分离?_php资料_编程技术
.NET平台下WEB应用程序的部署的例子_.net资料_编程技术
任意字符集下正常显示网页_[PHP教程]
Reading number is top 10 pictures
奇趣的世界记录2
Startling Russian girl blind date scene1
The household design, do not do bridal chamber a pity
2015中美最新武器装备巅峰对决!
看如何给单纯的少女洗脑
Hunan province aizhai super-large suspension bridge open to traffic and 4 world first1
The money of more than 100 countries and regions12
The world's top ten most beautiful railway station1
Soong ching ling's former residence2
清扫五脏垃圾,我有绝招
Download software ranking
仙剑奇侠传98硬盘WINXP版
asp.netWeb服务器高级编程
Boxer vs Yellow4
好色的外科大夫
jdk1.5
JSP+Ajax Web development typical examples
功夫熊猫2(上集)
Unix video tutorial20
功夫熊猫2(下集)
传奇私服架设教程
aaa published in(发表于) 2014/7/19 0:10:47 Edit(编辑)
delphi坐标映射

delphi坐标映射

delphi坐标映射

坐标映射

为什么在调用GDI 程序时不能使用设备坐标系代替逻辑坐标系呢?请首先运行下面代码:

Form1.Canvas.TextOut(0,0,’UpperLaftCornerofForm’);

上面的代码把字符串显示在窗体的左上角。逻辑坐标系的(0,0)位置对应于窗体设备环境的(0,0)位置。但是,窗体的左上角(0,0)不同于设备坐标系的(0,0)。如果窗体是在屏幕的左上角出现,窗体坐标系的(0,0)可以实际对应设备坐标系的(0,0)。将窗体移动到另一个坐标系时,窗体坐标系的(0,0)将对应设备上完全不同的位置。

提示:通过Win32 API 函数ClientToScreen()和ScreenToClient(),可以把一个基于逻辑坐标系的坐标转换为基于设备坐标系的坐标。当然,也可以用TControl 的方法。注意,这只对屏幕的设备环境和可视的控件有效。对于打印机或图元文件的设备环境来说,由于不是以屏幕为参照,要把逻辑像素转换为设备像素,可以调用Win32 函数LptoDP()。还可以参看Win32 在线帮助中的DptoLP()函数。

在调用Canvas.TextOut()时,Win32 实际上使用的是设备坐标系。为了让Win32 实现这一点,必须把逻辑坐标系映射成设备坐标系。通过设备环境的映射模式可以实现这一点。

使用逻辑坐标系的另一个原因是为了适应不能在调用画图程序时使用像素,而是只能使用英寸或毫米的情况。正如看到的那样,Win32 通过改变映射模式来改变度量单位。

映射模式有两个属性:一是Win32 把逻辑单位转换为设备单位的转换器,二是设备环境的x、y轴方向。

提醒读者注意的是,在Delphi 7 中,与设备环境有关的绘画程序、映射模式、方向等看起来好像都是些不太重要的知识点,只是使用TCanvas 对象来绘画。实际上,TCanvas 只是对设备环境的封装。

当Win32 GDI 程序与对应的Canvas 程序比较时,就看得明显了。例如,

Canvas 程序:

Canvas.Rectangle(0,0,50,50);

GDI 程序:

Rectangle(ADC,0,0,50,50);

当使用GDI 程序时,要传递设备环境给程序,而Canvas 程序则使用封装的设备环境。Win32 给设备环境或TCanvas.Handle 定义了映射模式。实际上,Win32 定义了8 种可用的映射模式。

·MM_ANISOTROPIC arbitrary(x<>y)or(x=y) 可定义/可定义

·MM_HIENGLISH 0.001inch 右/上

·MM_HIMETRIC 0.01mm 右/上

·MM_ISOTROPIC arbitrary(x=y) 可定义/可定义

·MM_LOENGLISH 0.01inch 右/上

·MM_LOMETRIC 0.1mm 右/上

·MM_TEXT1 pixel 右/下

·MM_TWIPS 1/440inch 右/上

Win32 定义了一些函数用于改变或者获取给定设备环境的映射模式。下面列出了这些函数。

• SetMapMode()为给定设备环境设置映射模式。

• GetMapMode()获取给定设备环境的映射模式。

• SetWindowOrgEx()设置给定设备环境的窗口原点(0,0)。




添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.