《CBuilder图形程序设计入门.ppt》由会员分享,可在线阅读,更多相关《CBuilder图形程序设计入门.ppt(18页珍藏版)》请在金锄头文库上搜索。
1、第第1010章章 C+BuilderC+Builder图形程序图形程序设计简介设计简介第第1010章章 C+BuilderC+Builder图形程图形程序设计简介序设计简介10.1 Windows10.1 Windows图形编程知识图形编程知识10.2 10.2 基本图形类基本图形类10.3 10.3 基本图形图像组件基本图形图像组件10.4 BCB10.4 BCB图形程序示例图形程序示例10.1 Windows10.1 Windows图形编程知识图形编程知识10.1.1 Windows10.1.1 Windows编程的特点编程的特点设备无关性设备无关性 windowswindows使用图形设
2、备接口使用图形设备接口(GDI)(GDI)及设备驱动程序实现图形的及设备驱动程序实现图形的设备无关性设备无关性. .基于消息驱动基于消息驱动 消息是关于用户接口改变的事件产生的。如鼠标、键盘、窗消息是关于用户接口改变的事件产生的。如鼠标、键盘、窗口变化等。一般用一个专用符号常量表示一种对应消息。以口变化等。一般用一个专用符号常量表示一种对应消息。以WM_WM_开头。开头。10.1 Windows10.1 Windows图形编程知识图形编程知识10.1.2 10.1.2 图形设备接口图形设备接口GDIGDIWindowsWindows操作系统具有一系列组建模块,分别负责系统操作系统具有一系列组建
3、模块,分别负责系统管理的某个方面,与绘图联系最密切的组建是图形设管理的某个方面,与绘图联系最密切的组建是图形设备接口(备接口(GDIGDI)。)。GDIGDI管理像画笔、位图及调色板这样管理像画笔、位图及调色板这样的图形对象,每个的图形对象,每个GDIGDI对象都使用某种方式控制对象都使用某种方式控制GDIGDI提提供的绘图例程的动作。画笔确定了供的绘图例程的动作。画笔确定了GDIGDI画的线条的属性,画的线条的属性,画刷影响画刷影响GDIGDI如何填充屏幕的不同区域,当窗口需要重如何填充屏幕的不同区域,当窗口需要重画时,画时,WindowsWindows类使用类使用WHITE_BRUSHWH
4、ITE_BRUSH填充窗口的整个背填充窗口的整个背景。景。10.1 Windows10.1 Windows图形编程知识图形编程知识10.1.3 Windows10.1.3 Windows坐标系统坐标系统WindowsWindows通常使用的是三种类型的坐标通常使用的是三种类型的坐标屏幕坐标(象素坐标)屏幕坐标(象素坐标) 原点固定在屏幕左上角,坐标的单位是象素(也称图形元素,它对应于屏幕原点固定在屏幕左上角,坐标的单位是象素(也称图形元素,它对应于屏幕上的一个彩色点)。上的一个彩色点)。窗口坐标窗口坐标 原点在整个窗口的左上角(包括标题栏和窗口边框)。原点在整个窗口的左上角(包括标题栏和窗口边
5、框)。用户坐标用户坐标 原点在窗口的可绘图区域的左上角。原点在窗口的可绘图区域的左上角。 不同坐标系统应用的一个特殊例子:鼠标消息用客户坐标提供位置不同坐标系统应用的一个特殊例子:鼠标消息用客户坐标提供位置数据,而数据,而GetCursorPosGetCursorPos()()是以屏幕坐标获取鼠标指针的当前位置。是以屏幕坐标获取鼠标指针的当前位置。10.2 10.2 基本图形类基本图形类10.2.1 10.2.1 TCanvasTCanvas图形类图形类 在在C+BuilderC+Builder中,绘图操作经常是作用在对象的画布中,绘图操作经常是作用在对象的画布(Canvas)(Canvas)
6、上,而不是直接在对象上绘制。画布是指在窗体、图形控制、打印上,而不是直接在对象上绘制。画布是指在窗体、图形控制、打印机或位图上按位映射的作图表面。画布类变量常用作窗体或其它控机或位图上按位映射的作图表面。画布类变量常用作窗体或其它控件的属性,同时它本身也是对象。画布提供了一个用户作图区域,件的属性,同时它本身也是对象。画布提供了一个用户作图区域,程序运行期间可以在该区域作图。程序运行期间可以在该区域作图。 CanvasCanvas的主要优点是能有效管理资源和设备描述表,它封装了的主要优点是能有效管理资源和设备描述表,它封装了WindowsWindows中与中与GDIGDI有关的有关的APIAP
7、I,这意味着可以不必关心,这意味着可以不必关心GDIGDI的概念。在的概念。在程序设计中,不管是向屏幕、打印机还是位图上绘图,都只需使用程序设计中,不管是向屏幕、打印机还是位图上绘图,都只需使用同样的方法。同样的方法。10.2.1 10.2.1 TCanvasTCanvas图形类图形类10.2.1.1 Canvas10.2.1.1 Canvas的主要属性的主要属性 属 性说 明Brush确定图形和背景的颜色和图案。通过Tbrush对象的属性设置ClipRect画布的裁剪矩形,将绘图区域限制在该区域CopyMode指定图形的复制模式Font指定文本字体,通过Tfont对象的属性设置HandleC
8、anvas的设备描述表句柄,可直接调用WindowsAPIPen指定画笔类型,通过TPen对象的属性设置PenPos设置当前画笔的x、y坐标Pixel设置当前区域象素的颜色10.2.1 10.2.1 TCanvasTCanvas图形类图形类10.2.1.2 Canvas10.2.1.2 Canvas的主要方法的主要方法 方 法功 能Are画圆弧BrushCopy以透明背景显示位图CopyRect复制剪裁矩形内的图形到画布Draw在画布上复制内存中的图形DrawFocusRec在当前矩形区域绘制矩形Ellipse画椭圆,并用当前画刷填充FillRect填充画布上指定的矩形FloodFill填充画
9、布上的封闭多边形LineTo从当前画笔位置向指定的(x、y)坐标点画直线MoveTo设置当前画笔位置Pie画饼形图PolyBezier画Bezier曲线10.2.1 10.2.1 TCanvasTCanvas图形类图形类10.2.1.2 Canvas10.2.1.2 Canvas的主要方法的主要方法 方 法功 能Polygon画多边形,并用当前画刷填充Polyline画折线,不自动闭合Rectangle画矩形轮廓线,并用当前画刷填充Refresh取消选定的画笔、画刷和字体,但不改变其属性值RoundRect画园角填充矩形StretchDraw从内存中复制位图到画笔上,尺寸可伸缩TextExte
10、nt返回传入Text参数的AnsiString类字符串的高度和宽度TextHeight返回传入Text参数的AnsiString类字符串的高度TextOut使用当前字体在画笔上输出文本TextRect在剪裁矩形内输出文本TextWidth返回传入Text参数的AnsiString类字符串的宽度10.2.1 10.2.1 TCanvasTCanvas图形类图形类10.2.1.3 10.2.1.3 图形语句示例图形语句示例 (1)(1)绘直线绘直线 Canvas-MoveTo(x1, y1);Canvas-MoveTo(x1, y1); CanvadCanvad-LineTo(x2, x2);-L
11、ineTo(x2, x2);(2)(2)绘矩形绘矩形 Canvas-Rectangle(x1,y1, x2,y2);Canvas-Rectangle(x1,y1, x2,y2);(3)(3)绘椭圆绘椭圆 Canvas-Ellipse(x1,y1, x2,y2);Canvas-Ellipse(x1,y1, x2,y2);(4)(4)绘园角矩形绘园角矩形 Canvas-RoundRect(x1,y1, x2,y2);Canvas-RoundRect(x1,y1, x2,y2);(5)(5)绘园弧绘园弧 Canvas-Arc(x1,y1, x2,y2, x3,y3, x4,y4);Canvas-Ar
12、c(x1,y1, x2,y2, x3,y3, x4,y4);(6)(6)绘多边形绘多边形 Canvas-Canvas-Polygon(constPolygon(const Windows:TpointWindows:Tpoint *Points, const *Points, const intint Points_SizePoints_Size););(7)(7)绘文本绘文本 Canvas-Canvas-TextOut(intTextOut(int x, x, intint y, const y, const AnsiStringAnsiString Text); Text);10.2.2
13、10.2.2 TPenTPen类类 PenPen属性的值为一个属性的值为一个TPenTPen类,使用类,使用TPenTPen类可以描述类可以描述WindowsWindows的笔的笔(Pen)(Pen)属属性用以控制画布上绘制的线或几何图形性用以控制画布上绘制的线或几何图形(shape)(shape)的边框线。常用属性有:的边框线。常用属性有:WidthWidth:线宽(象素数),默认值为:线宽(象素数),默认值为1 1;ColorColor:其属性值是一个:其属性值是一个TColorTColor对象,对象,TColorTColor对象有三种赋值方式:对象有三种赋值方式: (1)RGB(1)RG
14、B: CancasCancas-Pen-Color = RGB(255,0,0);/-Pen-Color = RGB(255,0,0);/红色红色 (2)(2)颜色常量:颜色常量:Canvas-Pen-Color = Canvas-Pen-Color = clGreenclGreen; /; /绿色绿色 (3)(3)二进制码:二进制码:Canvas-Pen-Color = 0x00FF0000;/Canvas-Pen-Color = 0x00FF0000;/蓝色蓝色StyleStyle:设置线型:设置线型 Canvas-Pen-Style = Canvas-Pen-Style = psClea
15、rpsClear; /; /不绘图形轮廓不绘图形轮廓 Canvas-Pen-Style = Canvas-Pen-Style = psDashpsDash; /; /短划线短划线 Canvas-Pen-Style = Canvas-Pen-Style = psDashDotpsDashDot; /; /点划线点划线 Canvas-Pen-Style = Canvas-Pen-Style = psDashDotDotpsDashDotDot; /; /双点划线双点划线 Canvas-Pen-Style = Canvas-Pen-Style = psDotpsDot; /; /点线点线 Canva
16、s-Pen-Style = Canvas-Pen-Style = psInsideFramepsInsideFrame; /; /实线,宽度大于实线,宽度大于1 1时可变色时可变色 Canvas-Pen-Style = Canvas-Pen-Style = psSolidpsSolid; /; /实线实线ModeMode:确定笔的颜色与画布颜色的作用规律。:确定笔的颜色与画布颜色的作用规律。10.2.3 10.2.3 TBrushTBrush类类 TBrushTBrush类用于图形填充,如填充多边形、圆形、矩形等。可选择填充类用于图形填充,如填充多边形、圆形、矩形等。可选择填充图案和颜色。图案
17、和颜色。(1 1)图案设置)图案设置 Canvas-Brush-Style = Canvas-Brush-Style = bsSolidbsSolid; /; /实心填充实心填充 Canvas-Brush-Style = Canvas-Brush-Style = bsClearbsClear; /; /不填充不填充 Canvas-Brush-Style = Canvas-Brush-Style = bsBDiagonalbsBDiagonal; /; /斜线填充斜线填充 Canvas-Brush-Style = Canvas-Brush-Style = bsFDiagonalbsFDiagon
18、al; /; /反斜线填充反斜线填充 Canvas-Brush-Style = Canvas-Brush-Style = bsCrossbsCross; /; /十字线填充十字线填充 Canvas-Brush-Style = Canvas-Brush-Style = bsDiagCrossbsDiagCross; /; /交叉线填充交叉线填充 Canvas-Brush-Style = Canvas-Brush-Style = bsHorizotalbsHorizotal; /; /水平线填充水平线填充 Canvas-Brush-Style = Canvas-Brush-Style = bsVe
19、rticalbsVertical; /; /垂直线填充垂直线填充(2 2)颜色设置)颜色设置 Canvas-Brush-Color = Canvas-Brush-Color = clTealclTeal; /; /紫色刷子紫色刷子10.3 10.3 图形图像组件图形图像组件10.3.1 10.3.1 TMainMenuTMainMenu组件组件10.3.2 10.3.2 TImageTImage组件组件10.3.3 10.3.3 TShapeTShape组件组件10.3.4 10.3.4 文件文件I/OI/O组件组件10.3.1 10.3.1 TMainMenuTMainMenu组件组件TMa
20、inMenuTMainMenu组件为菜单设计控件。组件为菜单设计控件。它打开一个它打开一个MainMenuMainMenu窗体,用户可以灵活的用它设计窗体,用户可以灵活的用它设计程序菜单。程序菜单。10.3.2 10.3.2 TImageTImage组件组件TImageTImage组件是一个显示图像和绘制图形的组件。在设计阶段以虚框组件是一个显示图像和绘制图形的组件。在设计阶段以虚框显示,运行时并不可见。显示,运行时并不可见。它支持它支持JPGJPG、BMPBMP、ICOICO、EMFEMF等多种格式的图像文件。等多种格式的图像文件。TImageTImage组件的基本属性组件的基本属性:Aut
21、oSizeAutoSize:确定图像组件是否调整自身大小以适应所包含的图像。:确定图像组件是否调整自身大小以适应所包含的图像。CanvasCanvas:定义一个:定义一个TCanvasTCanvas对象,提供一个绘图界面,可用来显示对象,提供一个绘图界面,可用来显示位图、绘制图像、输出文字。位图、绘制图像、输出文字。CenterCenter:指定图像是否居中显示。:指定图像是否居中显示。PicturePicture:确定在:确定在TImageTImage中显示的图像。中显示的图像。StretchStretch:确定在:确定在TImageTImage中显示的图像是否调整自身以适应中显示的图像是否
22、调整自身以适应TImageTImage的大小。的大小。TransparentTransparent:确定:确定TImageTImage组件的背景是否透明。组件的背景是否透明。10.3.3 10.3.3 TShapeTShape组件组件TShapeTShape是一个窗口装饰组件。可以在窗口上画出各种几何图形、不同底是一个窗口装饰组件。可以在窗口上画出各种几何图形、不同底纹和边框的图形。纹和边框的图形。TShapeTShape组件的常用属性:组件的常用属性:BrushBrush:指定填充:指定填充ShapeShape组件的颜色和样式,其两个子属性为组件的颜色和样式,其两个子属性为ColorColo
23、r和和StyleStyle。PenPen:指定绘制:指定绘制ShapeShape边框所使用的画笔。边框所使用的画笔。PenPen的子属性有:的子属性有:ColorColor、ModeMode、StyleStyle和和WidthWidth。ShapeShape:设定:设定TShapeTShape组件的形状:组件的形状: stRectanglestRectangle(矩形)(矩形) stSquarestSquare(正方形)(正方形) stRoundRectstRoundRect(园角矩形)(园角矩形) stRoundSquarestRoundSquare(园角正方形)(园角正方形) stCirc
24、lestCircle(圆形)(圆形) stEllipsestEllipse(椭圆)(椭圆)10.3.4 10.3.4 文件文件I/OI/O组件组件TOpenDialogTOpenDialog组件和组件和TSaveDialogTSaveDialog组件组件该两组件分别对应于打开文件和保存文件对话框。该两对话框外该两组件分别对应于打开文件和保存文件对话框。该两对话框外形一样,唯一的差别在于前者包含的是打开文件按钮,后者包含形一样,唯一的差别在于前者包含的是打开文件按钮,后者包含的是保存文件按钮。的是保存文件按钮。打开或保存10.4 BCB10.4 BCB图形程序示例图形程序示例绘图示例实现了一个简单交互式绘图软件,具有以下功能:绘图示例实现了一个简单交互式绘图软件,具有以下功能:1、绘制各种图形实体(园、椭圆、直线、矩形、扇形、饼图等);2、可改变绘图颜色3、可改变绘图线型和线宽4、可用多种方式和不同颜色填充封闭实体5、绘制的图形可以存盘(以图像方式)6、可剪切、复制、粘帖图像7、展示了几个绘图示例软件包含了以下组件:软件包含了以下组件:TmainMenu:菜单组件TImage: 图像组件TOpenDialog:打开文件组件TSaveDialog:存文件组件