Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)aaa
published in(发表于) 2014/7/19 0:10:49
delphi坐标系统使用方法详解

delphi坐标系统使用方法详解|实例

坐标系统

在使用大多数GDI 函数时,需要指定坐标集,用来确定绘图的位置。这些坐标基于一个度量单元,诸如像素。通常,GDI 以垂直方向和水平方向上的两个轴来定位,也就是说,通过增减x、y 坐标值来移动绘图位置。Win32 主要依赖两个因素来执行绘图函数:坐标系统和映射模式。

Win32 坐标系统与任何其他坐标系统没有什么区别。指定了一个点的x、y 坐标,Win32 就在绘图表面定位这个点。Win32 使用3 种坐标系统,分别是设备、逻辑和通用坐标系。Windows 95 不支持通用坐标系(位图旋转、裁剪、扭曲等)。本章将讨论前两种模式。

11.3.1 设备坐标系

设备坐标系是指运行于Win32 的设备。它以像素为单位进行度量,定位方向是水平轴从左到右、垂直轴从上到下。例如如果在640×480 的显示器上运行Windows,设备左上角坐标为(0,0),而右下角坐标为(639,479)。

11.3.2 逻辑坐标系

在Win32 中,有设备环境(或称DC)的区域通常使用逻辑坐标系。本节首先介绍屏幕、窗体、窗体的客户区。

11.3.3 屏幕坐标系

屏幕坐标系是指显示设备,它是以像素为度量单位的坐标系,如在640×480 的显示器上,Screen.Width 和Screen.Hight 分别为640 和480 像素。要获取屏幕的设备环境,可以使用Win32 API中的GetDC()函数。注意,当使用GetDC()函数后,必须调用RaleaseDC()函数来释放所获取的设备环境。下面的代码说明了这一点:

var

ScreenDC: HDC;

begin

ScreenDC := GetDC (0); //0 代码显示器

Try

...

finally

ReleaseDC(0,ScreenDC);

end;

end;

11.3.4 窗体坐标系

窗体坐标系也叫窗口坐标系,指整个窗体或窗口,包括标题栏和边框。Delphi 7 没有直接提供访问绘图区域DC 的属性,但可以通过使用Win32 API 中的GetWindowsDC()函数来获得DC。例如:

MyDC:=GetWindowDC(Form1.Handle);

这个函数返回指定窗口的设备环境。

需要注意的是可以通过TCanvas 对象来操纵由GetDC()和GetWindow()所获得的设备环境,进而通过设备环境来调用TCanvas 的方法。只要创建一个TCanvas 实例,然后把GetDC()或GetWindowsDC()的结果赋给TCanvas.Handle 属性。由于TCanvas 拥有句柄,当画布对象释放时将自动释放该设备环境。

下面的代码说明了这个技术:

procedure TForm1.Button1Click(Sender: TObject);

var

C: TCanvas;

begin

C:= TCanvas.Create;

C.Pen.Width :=5;

C.Font.Size:=30;

C.Font.Color:=clRed;

Try

C.Handle := GetDC (0);

C.TextOut(20,20,’Hello World’);

Finally

C.Free;

end;

end;




If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759