文档介绍:本章要点:
画布对象及其应用
TShape组件的属性、事件和方法
TImage组件的属性、事件和方法
Paintbox组件的属性、事件和方法
使用鼠标事件的绘图
第9章图像图形应用编程
图形应用编程
本章主要是讲解图形图像对象的概念以及如何在程序运行时绘制图形图像等内容,主要是通过一些例子来讲解Delphi 对图形图像强大的处理功能。在Delphi ,专门定义了一组对象和部件用以绘制图形,完成一些简单的图像功能。利用这些对象、部件的方法,可以方便地绘制各种常用图形;通过设置它们的属性,得到不同风格的图形。另外,通过鼠标事件的定义,可以方便地设计图形绘制程序。
画布对象属性
在图形应用编程中,最常用到的是canvas类,就是常说的画布。它可以将某些组件的表面作为一张画布,允许编程者利用有关的命令在其上任意地作图。很多组件都支持画布这个属性,同时画布本身又是一个对象,它也有自己的属性,但是这些属性必须要在程序执行时才可以来进行设置。常用的属性有以下几个。
(1)图形像素数组(PixArray)属性
PixArray属性确定用于像素颜色的读取和像素颜色的设置。
(2)画笔(Pen)属性
Pen属性确定画布用做画线及轮廓线的画笔。
画布对象属性(1)
(3)画刷(Brush)属性
Brush属性确定画布用于填充图像及背景色的颜色及图案。
(4)字体(Font)属性
Font属性确定画布的字体。
1. 像素
像素是构成图形的最基本的单位,画布上每一个点都有对应的像素,用来代表构成一个图形的某一点的颜色。像素的处理一般包括像素颜色的读取和像素颜色的设置。最常用的是利用画布的Pixels属性,来绘制函数曲线。
【例9-1】用Pixels属性来画Y=X的函数曲线。
运行后的界面如图9-1所示。
图9-1 用像素来画图
主要的功能如下:
单击显示按钮,在屏幕上就可以画出Y=X的函数图。
主要的程序代码如下:
图9-1 用像素来画图
画布对象属性(2)
procedure (Sender: TObject);
VAR xt,yt,t:integer; //xt,yt是用来决定像素的位置,t用来控制循环次数。
x,y:real; //x,y是用来取得屏幕的中心
begin
x:=;
// ClientWidth属性指的是不包括标题栏在内的宽度。
y:=;
// 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);
[xt,yt]:=clblue;//画布的像素颜色为蓝色。
end; end;
画布对象属性(3)
2. 画笔
画布中的画笔属性是用来控制用户画一条线时的线条形状。画一条线其实就是改变两点间的像素颜色。
画笔本身又包含了四个可以设置的属性:颜色(Color)、宽度(Width)、风格(Style)和显示模式(Mode)。
(1)颜色属性(Color)
在了解颜色属性前,先来了解一下Windows的颜色系统。
以前可能已经听说了一个颜色是多少位的,这是表示所能表达的颜色数多少的指标,是什么意思呢?比如1位的颜色则表示2的一次方,即黑或白两种颜色,这种图片很少见。8位的颜色则表示最多可以有28=256种颜色,表明一张图片中最多可以有256种颜色。24位的图片可以包含16M位的颜色。比如使窗体的背景色为白色则可以用:
:=RGB(255,255,255);
当然你也可以用数值法来直接表达,如何写呢?在Delphi $符号。因为Windows 98中的颜色系统是32位的,所以头8位不用,用0来表示。红色可以写成::=$00FF0000;
注意这里是十六进制数。后6位每两位代表一个分量(00-FF),头两位不用。
画布对象属性(4)
接下来了解画笔的颜色属性,它的缺省值为黑色。如果要将画笔的颜色定义为绿色,那么可以用以下的代码:
:=clgreen;
或者是:
:=$0000ff00;
(