第9章图像图形应用编程 本章要点: 画布对象及其应用 USHape组件的属性、事件和方法 区 rImage组件的属性、事件和方法 pAintbox组件的属性、事件和方法 区使用鼠标事件的绘图
本章要点: 画布对象及其应用 TShape组件的属性、事件和方法 TImage组件的属性、事件和方法 Paintbox组件的属性、事件和方法 使用鼠标事件的绘图 第9章 图像图形应用编程
91图形应用编程 本章主要是讲解图形图像对象的概念以及如何在程序运行时绘制图形图 像等内容,主要是通过一些例子来讲解 Delphi70对图形图像强大的处理功 能。在 Delphi7.0中,专门定义了一组对象和部件用以绘制图形,完成一些 简单的图像功能。利用这些对象、部件的方法,可以方便地绘制各种常用 图形;通过设置它们的属性,得到不同风格的图形。另外,通过鼠标事件 的定义,可以方便地设计图形绘制程序。 9.1.1画布对象属性 在图形应用编程中,最常用到的是 canvas类,就是常说的画布。它可以 将某些组件的表面作为一张画布,允许编程者利用有关的命令在其上任意地作 图。很多组件都支持画布这个属性,同时画布本身又是一个对象,它也有自己 的属性,但是这些属性必须要在程序执行时才可以来进行设置。常用的属性有 以下几个。 (1)图形像素数组( PiXArray)属性 PiXArray属性确定用于像素颜色的读取和像素颜色的设置。 (2)画笔(Pen)属性 Pen属性确定画布用做画线及轮廓线的画笔 Inprise Dephi
9.1 图形应用编程 本章主要是讲解图形图像对象的概念以及如何在程序运行时绘制图形图 像等内容,主要是通过一些例子来讲解Delphi 7.0 对图形图像强大的处理功 能。在Delphi 7.0中,专门定义了一组对象和部件用以绘制图形,完成一些 简单的图像功能。利用这些对象、部件的方法,可以方便地绘制各种常用 图形;通过设置它们的属性,得到不同风格的图形。另外,通过鼠标事件 的定义,可以方便地设计图形绘制程序。 9.1.1 画布对象属性 在图形应用编程中,最常用到的是canvas类,就是常说的画布。它可以 将某些组件的表面作为一张画布,允许编程者利用有关的命令在其上任意地作 图。很多组件都支持画布这个属性,同时画布本身又是一个对象,它也有自己 的属性,但是这些属性必须要在程序执行时才可以来进行设置。常用的属性有 以下几个。 (1)图形像素数组(PixArray)属性 PixArray属性确定用于像素颜色的读取和像素颜色的设置。 (2)画笔(Pen)属性 Pen属性确定画布用做画线及轮廓线的画笔
911画布对象属性(1) (3)画刷( Brush)属性 Brush属性确定画布用于填充图像及背景色的颜色及图案。 (4)字体(Font)属性 Font属性确定画布的字体。 1.像素 像素是构成图形的最基本的单位,画布上每一个点都有对应的像素, 用来代表构成一个图形的某一点的颜色。像素的处理一般包括像素颜色的 读取和像素颜色的设置。最常用的是利用画布的Pⅸels属性,来绘制函数 曲线 【例9-1】用 Pixels属性来画Y=X的函数曲线 运行后的界面如图9-1所示。 图9-1用像素来画图 主要的功能如下 单击显示按钮,在屏幕上就可以画出¥X的函数图。 图9-1用像素 主要的程序代码如下 来画图 Inprise Dephi
9.1.1 画布对象属性(1) (3)画刷(Brush)属性 Brush属性确定画布用于填充图像及背景色的颜色及图案。 (4)字体(Font)属性 Font属性确定画布的字体。 1. 像素 像素是构成图形的最基本的单位,画布上每一个点都有对应的像素, 用来代表构成一个图形的某一点的颜色。像素的处理一般包括像素颜色的 读取和像素颜色的设置。最常用的是利用画布的Pixels属性,来绘制函数 曲线。 【例9-1】 用Pixels属性来画Y=X的函数曲线。 运行后的界面如图9-1所示。 图9-1 用像素来画图 主要的功能如下: 单击显示按钮,在屏幕上就可以画出Y=X的函数图。 主要的程序代码如下: 图9-1 用像素 来画图
911画布对象属性(2) procedure TForm1. Button1Click(sender: TObject VAR Xt,yt, t: integer;xt,yt是用来决定像素的位置,t用来控制循环次数。 x, y: real;∥xy是用来取得屏幕的中心 begin x:=form1. ClientWidth/2 ∥ ClientWidth属性指的是不包括标题栏在内的宽度。 y: =form1. ClientHeight/2 ∥ ClientHeight属性指的是不包括标题栏在内的高度 fort:=-10000to10000do begin xt:=≡ round(f100+X) {t之所以要除以100是因为要让像素的显示紧密点没有断断续续的感觉,加上x是 因为原来的中 心在(0,0)的地方,也就是画布的左上角,而现在是要移到(xy)的地方, 将坐标原点进行了 移动。} yt: =round (-t/100+y) canvas.Pixels[Xt, yt]:cbue;/画布的像素颜色为蓝色 end: end norse Dephi
9.1.1 画布对象属性(2) procedure TForm1.Button1Click(Sender: TObject); VAR xt,yt,t:integer; //xt,yt是用来决定像素的位置,t用来控制循环次数。 x,y:real; //x,y是用来取得屏幕的中心 begin x:=form1.ClientWidth/2; // ClientWidth属性指的是不包括标题栏在内的宽度。 y:=form1.ClientHeight/2; // ClientHeight属性指的是不包括标题栏在内的高度。 for t:=-10000 to 10000 do begin xt:=round(t/100+x); {t之所以要除以100是因为要让像素的显示紧密点没有断断续续的感觉,加上x是 因为原来的中 心在(0,0)的地方,也就是画布的左上角,而现在是要移到(x,y)的地方, 将坐标原点进行了 移动。} yt:=round(-t/100+y); canvas.Pixels[xt,yt]:=clblue;//画布的像素颜色为蓝色。 end; end;
911画布对象属性(3) 2.画笔 画布中的画笔属性是用来控制用户画一条线时的线条形状。画一条线其 实就是改变两点间的像素颜色。 画笔本身又包含了四个可以设置的属性:颜色( Color)、宽度( Width) 风格( Style)和显示模式(Mode)。 (1)颜色属性( Color) 在了解颜色属性前,先来了解一下 Windows的颜色系统。 以前可能已经听说了一个颜色是多少位的,这是表示所能表达的颜色数多 少的指标,是什么意思呢?比如1位的颜色则表示2的一次方,即黑或白两种颜 色,这种图片很少见。8位的颜色则表示最多可以有28=256种颜色,表明一张 图片中最多可以有256种颜色。24位的图片可以包含16M位的颜色。比如使窗 体的背景色为白色则可以用: Form1. Color:=RGB(255,255,255); 当然你也可以用数值法来直接表达,如何写呢?在 Delph7.0中是在十六进 制数前面加$符号。因为 Windows98中的颜色系统是32位的,所以头8位不用, 用0来表示。红色可以写成:Form1colo:=$00FF0000 注意这里是十六进制数。后6位每两位代表一个分量(00-FF),头两位不用 Inprise Dephi
9.1.1 画布对象属性(3) 2. 画笔 画布中的画笔属性是用来控制用户画一条线时的线条形状。画一条线其 实就是改变两点间的像素颜色。 画笔本身又包含了四个可以设置的属性:颜色(Color)、宽度(Width)、 风格(Style)和显示模式(Mode)。 (1)颜色属性(Color) 在了解颜色属性前,先来了解一下Windows的颜色系统。 以前可能已经听说了一个颜色是多少位的,这是表示所能表达的颜色数多 少的指标,是什么意思呢?比如1位的颜色则表示2的一次方,即黑或白两种颜 色,这种图片很少见。8位的颜色则表示最多可以有28=256种颜色,表明一张 图片中最多可以有256种颜色。24位的图片可以包含16M位的颜色。比如使窗 体的背景色为白色则可以用: Form1.Color:=RGB(255,255,255); 当然你也可以用数值法来直接表达,如何写呢?在Delphi 7.0中是在十六进 制数前面加$符号。因为Windows 98中的颜色系统是32位的,所以头8位不用, 用0来表示。红色可以写成:Form1.Color:=$00FF0000; 注意这里是十六进制数。后6位每两位代表一个分量(00-FF),头两位不用