Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)aaapublished in(发表于) 2014/7/19 0:12:14 Delphi的绘图类
Delphi的绘图类:画布类(TCanvas)的使用方法实例
Windows 中的应用程序界面是以像素为显示单位的。因此Win32 专门提供Windows 图形设备接口(Graphics Device Interface,简称GDI)来实现应用程序界面的处理。也就是说,在Windows 中编写图像应用程序,主要是通过调用GDI 函数计算机屏幕上画图实现。在Delphi 中,将这些GDI 函数全部封装在TCanvas 封装,大大降低了图像编程的难度。本章将首先向读者介绍如何利用TCanvas 等类来实现一些常用的图像功能,然后以画图程序为例,向读者详细介绍这些类的应用方法。另外,在本章最后,向读者详细介绍了Delphi 高级图像编程技术。Delphi的绘图类在Delphi 7 中,可以通过以下几种方法:• 在设计时插入预先做好的图像;• 在设计时用图像组件控制它们;• 在程序运行阶段动态地生成图形。在编程过程中,用的最多的主要有TCanvas,在使用TCanvas 对象的过程中,还经常使用TPen、TBrush 和TColor 几个类。画布类(TCanvas)TCanvas 对象是可以看作一个用于绘图的画布,在这个区域内,程序可实现各种绘图功能,很多组件(如TImage、TMemo、TPaintBox 等)的Canvas 属性就是TCanvas 对象。Canvas 属性是对Windows GDI 的一个综合的、面向对象的封装。当使用TCanvas 编程时,TCanvas 类中的成员调用Windows GDI 函数。下面通过一个简单的例子来说明如何利用窗体对象的Canvas 属性来绘图。启动Delphi 7,新建一个应用程序。为窗体Form1 的OnPaint 事件添加如下代码:procedure TForm1.FormPaint(Sender: TObject);beginForm1.Canvas.TextOut(10,10,’画布对象--Canvas’);Form1.Canvas.Rectangle(60,60,200,140);end;在上面的程序中,应用了Canvas 的TextOut 和Rectangle 方法,分别是输出一行文字和画一个矩形,输出文本的字体、矩形的线条和填充色都是采用的默认值,通过改变Canvas 的属性可以使输出的结果更加美观。1.TCanvas 的典型应用procedure TForm1.FormPaint(Sender: TObject);varA,x1,y1,x2,y2:Double;D:Integer;I:Integer;E,M_PI:Double;beginD := 100;M_PI := 3.1415926535897932;for I := 0 to 720 dobeginA := I * M_PI / 360;E := D * (1 + sin(12 * A));x1 := 320 + E * cos(A);x2 := 320 + E * cos(A + M_PI / 6);y1 := 240 + E * sin(A);y2 := 240 + E * sin(A + M_PI / 6);Canvas.MoveTo(Round(x1),Round(y1));Canvas.LineTo(Round(x2),Round(y2));end;end;上面的代码只是利用了Delphi 的Canvas 绘图的基本观念和几个简单的基本函数就做出界面美观的电脑绘图。2.常用属性(1)ClipRect 属性TCanvas 的ClipRect 属性可以确定一个裁剪区域的边界。使用ClipRect 可以限制画布上的绘图区域,任何超过该区域的图形将被裁剪,不会出现在画布上。(2)CopyMode 属性确定一幅影像拷贝到画布上时相互作用的结果,当使用TCanvas 的CopyRect 方法,把一幅来自其他画布上的影像拷贝到画布上时,将使用其属性。(3)Font 属性在画布上输出文本时将使用其字体属性,它是一个TFont 对象,可以设置它的字型、字号和颜色等。(4)PenPos 属性该属性可以确定画笔所在的位置,使用PenPos 属性与使用MoveTo 方法具有同样的效果。(5)Pixels 属性该属性可以确定像素的颜色,一般说来,如果要设置某一位置的颜色,可以使用这一属性。
赞