第 12章 图形图像编程本章要点:
TCanvas对象的常用属性,方法及其使用
TGraphic对象的常用属性,方法及其使用
TBitmap对象的常用属性,方法及其使用
Picture对象的常用属性,方法及其使用
Delphi中的图形图像组件及其使用
12.1 循序渐进学理论
12.1.1 TCanvas对象的使用
1,TCanvas对象的属性
( 1) Pen属性
① Color属性
使用 Delphi提供的系统颜色常量如语句:
Form1.Canvas.Pen.Color:=clBlue
使用 RGB函数
RGB函数的一般格式为:
RGB(R,G,B)
直接以数字表示颜色例如有如下语句:
Form1.Canvas.Pen.Color:=$00FF00FF;
该语句与下面的语句作用是相同的:
Form1.Canvas.Pen.Color:=RGB(255,0,255);
③ Width属性该属性用于设置线条的粗细宽度,单位是像素,其最小值为 1。 下面的代码会将线条的粗细宽度设置为
10个像素 。
Form1.Canvas.Pen.Width:= 10;
④ Mode属性
Form1.Canvas.Pen.Mode:= pmXor;
其作用是画线时把画笔的颜色与屏幕的颜色异或。
( 2) Brush属性
① Color属性用来设置填充色,取值及含义与 Pen的 Color属性一样 。
② Style属性该属性用来设置填充样式。图 12-1是 Brush颜色值为
clBlack时的 Style属性值及其代表的样式。
图 12-1 Brush对象的 Style属性值及其代表的填充样式
( 3) Pixels属性该属性是一个二维数组属性,其声明如下:
property Pixels[X,Y:Integer]:TColor;
( 4) Font属性该属性用来设置在画布对象上输出文字的字体格式,它也有自己的子属性,通过设置它的子属性,可以决定在画布上输出文字的字体、大小、颜色以及字体风格等。
( 5) ClipRect属性该属性的声明如下:
property C1ipRect:TRect;
( 6) CopyMode属性该属性用于设置从其他画布拷贝图像的方式
( 7) Handle属性该属性用来返回画布对象的句柄 。
( 8) PenPos属性该属性的类型是 Tpoint型,其功能是用来设置或返回当前画笔位置所在的点。
2,TCanvas对象的方法
( 1) MoveTo方法
[格式 ],procedure MoveTo(X,Y Integer);
( 2) LineTo方法
[格式 ],procedure LineTo(X,Y Integer);
( 3) Arc方法
[格式 ],procedure Arc(Xl,Y1,X2,Y2,X3,Y3,X4,Y4:
Integer);
( 4) Ellipse方法
[格式 ],procedure Ellipse(Xl,Y1,X2,Y2,Integer);
( 5) Rectangle方法
[格式 ],procedure Rectangle(X1,Y1,X2,Y2,Integer);
( 6) RoundRect方法
[ 格式 ],procedure RoundRect(X1,Y1,X2,Y2,X3,Y3,
Integer);
( 7) Pie方法
[ 格式 ],Procedure Pie(X1,Y1,X2,Y2,X3,Y3,X4,Y4,
Longint);
( 8) Draw方法
[格式 ],procedure Draw(X,YInteger;Graphic:Tgraphic) ;
( 9) CopyRect方法
[格式 ]:
procedureCopyRect(Dest:TRect;Canvas:Tcanvas;Sour
ce:TRect);
( 10) FillRect方法
[格式 ],procedure FillRect(const Rect:TRect);
( 11) StretchDraw方法
[格式 ],procedure StretchDraw(const Rect:TRect;
Graphic:TGraphic);
( 12) TextOut方法
[格式 ],procedure Textout(X,Y:Integer,const
Text:String);
( 13) Polygon方法
[格式 ],Procedure
Polygon([Point(x1,y1),Point(x2,y2),Point(x3,y3
),… ]);
( 14) Chord方法
[格式 ],Procedure
Chord(X1,Y1,X2,Y2,X3,Y3,X4,Y4);
【 例 12-1】 编写一个程序,用来绘制一个椭圆和几个圆角矩形。程序执行时,单击 【 画图 】 按钮,运行界面如图 12-2所示。
图 12-2 程序运行界面
12.1.2 TGraphic对象的使用
1,TGraphic对象的属性
TGraphic对象有 Height,Width,Empty等属性。
2,TGraphic对象的方法
( 1) LoadFromFile方法
[格式 ],procedure LoadFromFile(const FileName,String)
( 2) SaveToFile方法
[格式 ],procedure SaveToFile(const FileName,String);
12.1.3 TPicture对象的使用
1,TPicture对象的属性
( 1) Bitmap属性
( 2) Icon属性
( 3) Metafile属性
( 4) Graphic属性
2,TPicture对象的方法主要方法有 LoadFromFile和 SaveToFile,这两个方法的格式和功能与 TGraphic对象的同名方法完全一致。
【 例 12-2】 编写一个绘制位图的程序,程序的运行界面如图 12-3所示。程序执行时单击 【 绘制位图 】
按钮,将从窗体的左上角开始原样绘制一幅图片,然后再把该图片缩小在一个矩形框内绘制。如图 12-3所示。
图 12-3 程序运行界面
12.1.4 TBitmap对象的使用
1,TBitmap对象的属性
( 1) Handle属性
( 2) IgnorePalette属性
( 3) Monochrome属性
( 4) Palette属性
2,TBitmap对象的方法主 要 方 法 有 LoadFromFile,SaveToFile,
Releasehandle等 。
12.1.5 Delphi中的图形图像组件
1,TShape组件属 性 值 图 形 属 性 值 图 形
stCircle 圆 stEllipse 椭圆
stRectangle 矩形 stRoundRect 圆角矩形
stSquare 正方形 stRoundSquare 圆角正方形
【 例 12-3】 编写一个 Shape形状演示程序,
程序的设计界面如图 12-4所示。程序运行时单击 【 随机画图 】 按钮后,TShape组件的形状将依次在 6种图形之间转换,同时在 Label组件中显示图形的名称,TShape组件的填充风格也自动在 8种填充风格之间转换,并且填充的色彩随机产生。每种图形的转换时间为 200毫秒。程序的运行界面如图 12-5所示。
图 12-4 程序设计界面 图 12-5 程序运行界面
2,TImage组件
TImage组件主要用于显示和处理图像,能够显示
BMP,JPEG,ICO,WMF,EMF等多种格式的图片。
它的主要属性如下:
( 1) Canvas属性
( 2) Picture属性例如,有下列语句:
Image1.Picture.LoadFromFile('D:\A1.JPG');
该语句的作用是把,D:\A1.JPG”图像文件显示在
TImage组件中。
( 3) Stretch属性该属性是一个 Boolean型属性,其值为 True时,表示将自动对图像进行拉伸或缩小操作,调整图像的尺寸以填满整个 TImage组件;当其值为 False时,若图像比 TImage组件大,多余的部分将显示不出来 。
图 12-6 TImage组件的 Stretch属性取值及图像显示情况
( 4) Center属性该属性是一个 Boolean型属性,用于确定图像是否居中显示在 TImage组件中。若 Center设置为 True,则表示图像将居中显示;否则,图像将从 TImage组件的左上角开始显示。
3,TPaintBox组件
TPaintBox组件主要提供一个可以用来绘制几何图形的矩形区域,它有一个 Canvas属性,可以使用它的绘图方法来绘制图形。
12.2 典型实例练能力
12.2.1 典型实例一:背景填充程序
【 实例题目 】
编写一个以位图填充窗体背景的应用程序,程序的设计界面如图 12-7所示。程序运行时,单击 【 选择图片 】 按钮,将弹出 【 打开 】 对话框供用户选择一幅作为背景填充的图片,并根据单选钮的状态进行,平铺,或,拉伸,填充。单击 【 平铺 】 单选钮,图片将以,平铺,方式填充整个窗体,如图 12-8所示。单击
【 拉伸 】 单选钮,图片将以,拉伸,方式填充整个窗体,如图 12-9所示。
图 12-7 程序设计界面 图 12-8 程序运行界面(一)
图 12-9 程序运行界面(二)
12.2.2 典型实例二:照片自动展示程序
【 实例题目 】
制作一个照片自动展示程序,程序启动后将循环显示照片,每张照片在屏幕上停留 0.5秒。当用户单击图片时将显示一个提示框,询问用户是否停止展示,
如果用户回答 【 是 】 将停止展示,回答 【 否 】 将接着展示。程序的设计界面如图 12-10所示,程序的运行界面如图 12-11所示。程序的运行界面如图 12-11所示。
运行时如果单击照片,将会出现如图 12-12所示的退出提示框,在该提示框窗口上选中 【 Yes】 按钮将退出图片展示程序,单击 【 No】 将继续展示。
图 12-10 程序设计界面 图 12-11 程序运行界面图 12-12,退出展示,提示框
12.3 上机练习重应用
【 练习 题目 】
程序运行时将出现一个钟表的轮廓和一个秒针,如图 12-13所示。秒针以每秒 12度的速度移动,图 12-14是某个时刻的程序运行情况。
图 12-13 程序设计界面 图 12-14 程序运行界面其中 a是圆的半径,t参数 ( 单位为度 ) 。 则 x2和 y2的值可用下式来计算:
x:=Floor(65*sin(t*3.1415926/180));
x2:=x1+x;
y:=Floor((-1)*65*cos(t*3.1415926/180));
y2:=y1+y;
其中 t为指针的当前度数。
)c os (
)s in(
tay
tax
12.3.2 上机练习二:简单画图程序
【 练习 题目 】
编写一个能够根据用户的选择画椭圆和矩形的程序。程序的设计界面如图 12-15所示,程序的运行界面如图 12-16所示。程序运行时,默认画椭圆,用户可以选择要画的图形。当用户在画图区域按下并拖动鼠标时将出现一个相应图形的轮廓,显示用户在释放鼠标时所画图形的形状与大小,当用户松开鼠标的时候将创建一个内部填充色为蓝色的与图形轮廓一样大的相应图形。
图 12-15 程序设计界面 图 12-16 程序运行界面
TCanvas对象的常用属性,方法及其使用
TGraphic对象的常用属性,方法及其使用
TBitmap对象的常用属性,方法及其使用
Picture对象的常用属性,方法及其使用
Delphi中的图形图像组件及其使用
12.1 循序渐进学理论
12.1.1 TCanvas对象的使用
1,TCanvas对象的属性
( 1) Pen属性
① Color属性
使用 Delphi提供的系统颜色常量如语句:
Form1.Canvas.Pen.Color:=clBlue
使用 RGB函数
RGB函数的一般格式为:
RGB(R,G,B)
直接以数字表示颜色例如有如下语句:
Form1.Canvas.Pen.Color:=$00FF00FF;
该语句与下面的语句作用是相同的:
Form1.Canvas.Pen.Color:=RGB(255,0,255);
③ Width属性该属性用于设置线条的粗细宽度,单位是像素,其最小值为 1。 下面的代码会将线条的粗细宽度设置为
10个像素 。
Form1.Canvas.Pen.Width:= 10;
④ Mode属性
Form1.Canvas.Pen.Mode:= pmXor;
其作用是画线时把画笔的颜色与屏幕的颜色异或。
( 2) Brush属性
① Color属性用来设置填充色,取值及含义与 Pen的 Color属性一样 。
② Style属性该属性用来设置填充样式。图 12-1是 Brush颜色值为
clBlack时的 Style属性值及其代表的样式。
图 12-1 Brush对象的 Style属性值及其代表的填充样式
( 3) Pixels属性该属性是一个二维数组属性,其声明如下:
property Pixels[X,Y:Integer]:TColor;
( 4) Font属性该属性用来设置在画布对象上输出文字的字体格式,它也有自己的子属性,通过设置它的子属性,可以决定在画布上输出文字的字体、大小、颜色以及字体风格等。
( 5) ClipRect属性该属性的声明如下:
property C1ipRect:TRect;
( 6) CopyMode属性该属性用于设置从其他画布拷贝图像的方式
( 7) Handle属性该属性用来返回画布对象的句柄 。
( 8) PenPos属性该属性的类型是 Tpoint型,其功能是用来设置或返回当前画笔位置所在的点。
2,TCanvas对象的方法
( 1) MoveTo方法
[格式 ],procedure MoveTo(X,Y Integer);
( 2) LineTo方法
[格式 ],procedure LineTo(X,Y Integer);
( 3) Arc方法
[格式 ],procedure Arc(Xl,Y1,X2,Y2,X3,Y3,X4,Y4:
Integer);
( 4) Ellipse方法
[格式 ],procedure Ellipse(Xl,Y1,X2,Y2,Integer);
( 5) Rectangle方法
[格式 ],procedure Rectangle(X1,Y1,X2,Y2,Integer);
( 6) RoundRect方法
[ 格式 ],procedure RoundRect(X1,Y1,X2,Y2,X3,Y3,
Integer);
( 7) Pie方法
[ 格式 ],Procedure Pie(X1,Y1,X2,Y2,X3,Y3,X4,Y4,
Longint);
( 8) Draw方法
[格式 ],procedure Draw(X,YInteger;Graphic:Tgraphic) ;
( 9) CopyRect方法
[格式 ]:
procedureCopyRect(Dest:TRect;Canvas:Tcanvas;Sour
ce:TRect);
( 10) FillRect方法
[格式 ],procedure FillRect(const Rect:TRect);
( 11) StretchDraw方法
[格式 ],procedure StretchDraw(const Rect:TRect;
Graphic:TGraphic);
( 12) TextOut方法
[格式 ],procedure Textout(X,Y:Integer,const
Text:String);
( 13) Polygon方法
[格式 ],Procedure
Polygon([Point(x1,y1),Point(x2,y2),Point(x3,y3
),… ]);
( 14) Chord方法
[格式 ],Procedure
Chord(X1,Y1,X2,Y2,X3,Y3,X4,Y4);
【 例 12-1】 编写一个程序,用来绘制一个椭圆和几个圆角矩形。程序执行时,单击 【 画图 】 按钮,运行界面如图 12-2所示。
图 12-2 程序运行界面
12.1.2 TGraphic对象的使用
1,TGraphic对象的属性
TGraphic对象有 Height,Width,Empty等属性。
2,TGraphic对象的方法
( 1) LoadFromFile方法
[格式 ],procedure LoadFromFile(const FileName,String)
( 2) SaveToFile方法
[格式 ],procedure SaveToFile(const FileName,String);
12.1.3 TPicture对象的使用
1,TPicture对象的属性
( 1) Bitmap属性
( 2) Icon属性
( 3) Metafile属性
( 4) Graphic属性
2,TPicture对象的方法主要方法有 LoadFromFile和 SaveToFile,这两个方法的格式和功能与 TGraphic对象的同名方法完全一致。
【 例 12-2】 编写一个绘制位图的程序,程序的运行界面如图 12-3所示。程序执行时单击 【 绘制位图 】
按钮,将从窗体的左上角开始原样绘制一幅图片,然后再把该图片缩小在一个矩形框内绘制。如图 12-3所示。
图 12-3 程序运行界面
12.1.4 TBitmap对象的使用
1,TBitmap对象的属性
( 1) Handle属性
( 2) IgnorePalette属性
( 3) Monochrome属性
( 4) Palette属性
2,TBitmap对象的方法主 要 方 法 有 LoadFromFile,SaveToFile,
Releasehandle等 。
12.1.5 Delphi中的图形图像组件
1,TShape组件属 性 值 图 形 属 性 值 图 形
stCircle 圆 stEllipse 椭圆
stRectangle 矩形 stRoundRect 圆角矩形
stSquare 正方形 stRoundSquare 圆角正方形
【 例 12-3】 编写一个 Shape形状演示程序,
程序的设计界面如图 12-4所示。程序运行时单击 【 随机画图 】 按钮后,TShape组件的形状将依次在 6种图形之间转换,同时在 Label组件中显示图形的名称,TShape组件的填充风格也自动在 8种填充风格之间转换,并且填充的色彩随机产生。每种图形的转换时间为 200毫秒。程序的运行界面如图 12-5所示。
图 12-4 程序设计界面 图 12-5 程序运行界面
2,TImage组件
TImage组件主要用于显示和处理图像,能够显示
BMP,JPEG,ICO,WMF,EMF等多种格式的图片。
它的主要属性如下:
( 1) Canvas属性
( 2) Picture属性例如,有下列语句:
Image1.Picture.LoadFromFile('D:\A1.JPG');
该语句的作用是把,D:\A1.JPG”图像文件显示在
TImage组件中。
( 3) Stretch属性该属性是一个 Boolean型属性,其值为 True时,表示将自动对图像进行拉伸或缩小操作,调整图像的尺寸以填满整个 TImage组件;当其值为 False时,若图像比 TImage组件大,多余的部分将显示不出来 。
图 12-6 TImage组件的 Stretch属性取值及图像显示情况
( 4) Center属性该属性是一个 Boolean型属性,用于确定图像是否居中显示在 TImage组件中。若 Center设置为 True,则表示图像将居中显示;否则,图像将从 TImage组件的左上角开始显示。
3,TPaintBox组件
TPaintBox组件主要提供一个可以用来绘制几何图形的矩形区域,它有一个 Canvas属性,可以使用它的绘图方法来绘制图形。
12.2 典型实例练能力
12.2.1 典型实例一:背景填充程序
【 实例题目 】
编写一个以位图填充窗体背景的应用程序,程序的设计界面如图 12-7所示。程序运行时,单击 【 选择图片 】 按钮,将弹出 【 打开 】 对话框供用户选择一幅作为背景填充的图片,并根据单选钮的状态进行,平铺,或,拉伸,填充。单击 【 平铺 】 单选钮,图片将以,平铺,方式填充整个窗体,如图 12-8所示。单击
【 拉伸 】 单选钮,图片将以,拉伸,方式填充整个窗体,如图 12-9所示。
图 12-7 程序设计界面 图 12-8 程序运行界面(一)
图 12-9 程序运行界面(二)
12.2.2 典型实例二:照片自动展示程序
【 实例题目 】
制作一个照片自动展示程序,程序启动后将循环显示照片,每张照片在屏幕上停留 0.5秒。当用户单击图片时将显示一个提示框,询问用户是否停止展示,
如果用户回答 【 是 】 将停止展示,回答 【 否 】 将接着展示。程序的设计界面如图 12-10所示,程序的运行界面如图 12-11所示。程序的运行界面如图 12-11所示。
运行时如果单击照片,将会出现如图 12-12所示的退出提示框,在该提示框窗口上选中 【 Yes】 按钮将退出图片展示程序,单击 【 No】 将继续展示。
图 12-10 程序设计界面 图 12-11 程序运行界面图 12-12,退出展示,提示框
12.3 上机练习重应用
【 练习 题目 】
程序运行时将出现一个钟表的轮廓和一个秒针,如图 12-13所示。秒针以每秒 12度的速度移动,图 12-14是某个时刻的程序运行情况。
图 12-13 程序设计界面 图 12-14 程序运行界面其中 a是圆的半径,t参数 ( 单位为度 ) 。 则 x2和 y2的值可用下式来计算:
x:=Floor(65*sin(t*3.1415926/180));
x2:=x1+x;
y:=Floor((-1)*65*cos(t*3.1415926/180));
y2:=y1+y;
其中 t为指针的当前度数。
)c os (
)s in(
tay
tax
12.3.2 上机练习二:简单画图程序
【 练习 题目 】
编写一个能够根据用户的选择画椭圆和矩形的程序。程序的设计界面如图 12-15所示,程序的运行界面如图 12-16所示。程序运行时,默认画椭圆,用户可以选择要画的图形。当用户在画图区域按下并拖动鼠标时将出现一个相应图形的轮廓,显示用户在释放鼠标时所画图形的形状与大小,当用户松开鼠标的时候将创建一个内部填充色为蓝色的与图形轮廓一样大的相应图形。
图 12-15 程序设计界面 图 12-16 程序运行界面