当前位置:文档之家› 基于GDI+的投影坐标与屏幕坐标的转换研究

基于GDI+的投影坐标与屏幕坐标的转换研究


数, e, f); }
Matrix myMatrix = new Matrix(缩放系数, 0.0f, 0.0f, -缩放系 pGraphics.Transform = myMatrix;
public static void 设置全局系数() {
float scaleX = 半宽 / 参数.桌面宽 * 2; float scaleY = 半高 / 参数.桌面高 * 2; float scale = scaleX; if (scaleY < scaleX) scale = scaleY; scale *= 0.98f; 缩放系数 = scale; 屏幕中点绘图坐标_X = 参数.桌面宽 * 0.5f; 屏幕中点绘图坐标_Y = 参数.桌面高 * 0.5f; } } }
3. Device Coordinate Space. 设备坐标系是在其上进行绘制的物理设备(如屏幕或 纸张)所使用的坐标系。这个空间有系统控制,转换在Page空间中的坐标到屏幕、 打印机可以使用的空间。也许屏幕、打印机的分辨率不一样,那么同样一英寸可 能在设备上显示不一样多的点。
当调用 myGraphics.DrawLine(myPen, 0, 0, 160, 80) 时,传递给 DrawLine 方法的点((0, 0) 和 (160, 80))位于世界坐标空间内。在 GDI+ 可以在屏幕上 绘制线条之前,坐标先要经过一系列变换。一种称为“世界变换”的变换可将世界 坐标转换为页面坐标,而另一种称为“页面变换”的变换可将页面坐标转换为设备 坐标。
半宽 = 宽 / 2; 半高 = 高 / 2; } public static void 设置显示参数(Graphics pGraphics) { pGraphics.PageUnit = GraphicsUnit.Pixel; float e = 半宽 - 缩放系数 * 屏幕中点绘图坐标_X; float f = 半高 + 缩放系数 * 屏幕中点绘图坐标_Y;
在GDI设备描述表(device context,DC)包含了特定的显示设备的信息、图 像的显示属性及特定的显示窗口等信息,用GDI编程的第一步必须获取当前的设 备描述表的句柄(hDC),然后将该句柄作为参数调用GDI提供的API函数。在 GDI+中,获取设备描述表后创建Graphics对象并继承其方法,Graphics对象的作 用与设备描述表相同,但使用上有很大不同,前者是基于句柄的技术,而后者是 基于面向对象的技术。Graphics对象是与特定的窗口信息相联系,包含特定的图 形显示信息,但是它不与特定的笔(pen)、刷(brush)、图像(image)和字体 (font)捆绑在一起。在GDI中,要用笔画线必须用SelectObject函数将特 定的笔对象选进获取的设备描述表,这被选的笔将用于后面画的所有的线;在 GDI+中,笔、刷、图像和字体等对象是作为参数传递给Graphics对象的方法。
myGraphics.TranslateTransform(100, 50); myGraphics.DrawLine(myPen, 0, 0, 160, 80);
页面变换将页面坐标映射到设备坐标。 Graphics 类提供了用于操作页面变换的 PageUnit 和 PageScale 属性。 Graphics 类还提供了两个只读属性: DpiX 和 DpiY,用于检查显示设备每英寸的水平点数和垂直点数。可使用 Graphics 类的 PageUnit 属性指定除像素以外的其他度量单位。
基于GDI+的投影坐标与屏幕坐标的转换研究
专 业:地图学与地理信息系统 姓 名:陈艳梅 学 号:2008056 指导老师:刘德儿
二、投影坐标与屏幕坐标的转换
1.投影坐标系(Projected Coordinate Systems) 投影坐标系使用基于X,Y值的坐标系统来描述地球上某个点所处的位置。这
个坐标系是从地球的近似椭球体投影得到的,它对应于某个地理坐标系。投影坐 标系由以下参数确定:
地理坐标系(由基准面确定,比如:北京54、西安80、WGS84) 投影方法(比如高斯-克吕格、Lambert投影、Mercator投影) 一般主要 用高斯—克吕格坐标。高斯—克吕格投影的直角坐标系统是按经差6°分带单独 投影,故各带坐标也成独立系统。在投影带中,以中央经线为纵轴(x),赤道 为横轴(y),两轴交点为原点。 2. 屏幕坐标(Screen coordinate) 在Windows 应用程序中涉及到的设备坐标系有三种:屏幕坐标系,窗口坐标 系和用户区坐标系。屏幕坐标系以整个显示器屏幕作为坐标区域,坐标原点在屏 幕的左上角,X 轴水平向右为正,Y轴竖直向下为正。屏幕坐标和应用程序无关, 对所有的应用程序是唯一的。 3.坐标的转换 在 GDI+中,屏幕坐标系统与数学中的坐标系统并不一样,要在 GDI+中使用 投影坐标系统,则需要在屏幕坐标的基础上进行坐标的变换,例如旋转,平移等。 假定想使用原点位于工作区的主体而非左上角的坐标系统。例如,让原点位 于距工作区左边缘 100 像素、距顶部 50 像素的位置。下图显示了这样的坐标 系统。
Keywords: GDI + technology, coordinate transformation, the screen
coordinates, Projection Coordinates
一、GDI+技术概述及 GDI+中的坐标系
GDI(graphics device interface)为图形设备接口,是Windows提供给应用程 序的编程接口,使得编程人员不需要与显示器、打印机等图形设备打交道。GDI+ 是GDI的改进型,它是基于类的应用程序编程接口。GDI+已包含在Windows XP 和服务器操作系统中,对在Windows.NE4.0 SP6,Windows2000, Windows98和Windows ME等操作系统中使用GDI+的用户需要下载GDI+的相关 软件安装。GDI+这种新型的图形设备接口与GDI比较,一方面增加了新的功能 如梯度刷(gradient brushes)和alpha blending等,这些新的功能能够让用户创建 全新的用户桌面体系,能够轻易地完成二维或三维的图形处理,为桌面带来一种 数字化的图片;另一方面修改了编程的模式,新的模式使用起来更加方便、实用 性更强。
在GDI+中有三个分开的坐标系空间(世界、页面和设备): 1. World coordinate space. 世界坐标是用于建立特殊图形世界模型的坐标系, 也是在 .NET Framework 中传递给方法的坐标系。它是图像系统中的二维空间。 World coordinate是通过两个浮点表示的抽象值。基本上,绘制任何东西最终都 会转换到这个空间。 2. Page Coordinate Space. 页面坐标系是指绘图图面(如窗体或控件)使用的 坐标系。 该空间用来对应真实世界的尺度。可以设定Page Coordinate来代表点、 英寸、毫米等等。这就是GDI+是个独立的解决方案的来源。可以设置使用的 PageUnit,调整PageScale来达到这一点.
以下是以 C#语言环境下进行的屏幕坐标经过旋转和平移等手段转换成高斯投影 坐标:
namespace 坐标转换 {
static class 坐标系 {
static public float 缩放系数 = 1.0f; static public float 屏幕中点绘图坐标_X; static public float 屏幕中点绘图坐标_Y; static float 半宽; sta大小(float 宽, float 高) {
当调用 myGraphics.DrawLine(myPen, 0, 0, 160, 80) 时,可得到下面的 插图中所显示的线条。
用于将世界坐标映射到页面坐标的世界变换保存在 Graphics 类的 Transform 属性中。在前面的示例中,世界变换是在 x 方向平移 100 个单位、在 y 方向 平移 50 个单位。下面的示例设置了 Graphics 对象的世界变换,然后使用该 Graphics 对象绘制前图中显示的线条:
this paper to study the projection coordinate system, the screen
coordinate system and in the c # of the Miao Xu studied on the basis of
the two conversions.
基于 GDI+的投影坐标与屏幕坐标的转换研究
摘要:概述了 GDI+技术以及其三种坐标系,对于本文所要研究的投影坐标系、
屏幕坐标系进行了描叙以及在 C#基础上研究了二者的转换。
关键词:GDI+技术、坐标转换、屏幕坐标、投影坐标
Abstract: The GDI + technology and its three kinds of coordinates, for
参考文献:
[1]邓宇军,凌海风,迟长啸. C#语言程序设计基础. 北京:清华大学出版,2008. [2] 赵森,许振宇,张秉权A 地理坐标与直角坐标相互转换的算法[J].火力与 指挥控制,2001,26(4):64- 66. [3]ChristianGraus.StartingwithGDI+[EB/OL].http///v epp/gdiphus/startinggdiphus.asp CodeProject.2002-05 [4]Mashesh Chard.GDI+图形程序设计[M].北京:电子工业出版社,2005 [5]CodeMaze.Hints get GDI+running[EB/OL].http///useritens/CodeMaze.asp CodeProject.2002-05
相关主题