《CBuilder图形程序设计入门》由会员分享,可在线阅读,更多相关《CBuilder图形程序设计入门(18页珍藏版)》请在金锄头文库上搜索。
1、第10章 C+Builder图形程序 设计简介第10章 C+Builder图形程 序设计简介 10.1 Windows图形编程知识 10.2 基本图形类 10.3 基本图形图像组件 10.4 BCB图形程序示例10.1 Windows图形编程知识 10.1.1 Windows编程的特点 设备无关性 windows使用图形设备接口(GDI)及设备驱动程序实现图形的 设备无关性. 基于消息驱动 消息是关于用户接口改变的事件产生的。如鼠标、键盘、窗 口变化等。一般用一个专用符号常量表示一种对应消息。以WM_开头 。10.1 Windows图形编程知识 10.1.2 图形设备接口GDI Windows
2、操作系统具有一系列组建模块,分别负责系统 管理的某个方面,与绘图联系最密切的组建是图形设备 接口(GDI)。GDI管理像画笔、位图及调色板这样的图 形对象,每个GDI对象都使用某种方式控制GDI提供的绘 图例程的动作。画笔确定了GDI画的线条的属性,画刷影 响GDI如何填充屏幕的不同区域,当窗口需要重画时, Windows类使用WHITE_BRUSH填充窗口的整个背景。10.1 Windows图形编程知识 10.1.3 Windows坐标系统 Windows通常使用的是三种类型的坐标 屏幕坐标(象素坐标) 原点固定在屏幕左上角,坐标的单位是象素(也称图形元素,它对应于屏幕 上的一个彩色点)。
3、窗口坐标 原点在整个窗口的左上角(包括标题栏和窗口边框)。 用户坐标 原点在窗口的可绘图区域的左上角。 不同坐标系统应用的一个特殊例子:鼠标消息用客户坐标提供位置 数据,而GetCursorPos()是以屏幕坐标获取鼠标指针的当前位置。10.2 基本图形类10.2.1 TCanvas图形类在C+Builder中,绘图操作经常是作用在对象的画布(Canvas)上,而不是直接在对象上绘制。画布是指在窗体、图形控制、打印 机或位图上按位映射的作图表面。画布类变量常用作窗体或其它控 件的属性,同时它本身也是对象。画布提供了一个用户作图区域, 程序运行期间可以在该区域作图。Canvas的主要优点是能有效
4、管理资源和设备描述表,它封装了 Windows中与GDI有关的API,这意味着可以不必关心GDI的概念。在 程序设计中,不管是向屏幕、打印机还是位图上绘图,都只需使用 同样的方法。10.2.1 TCanvas图形类10.2.1.1 Canvas的主要属性 属 性说 明Brush确定图形和背景的颜色和图案。通过Tbrush对象的属性设置ClipRect画布的裁剪矩形,将绘图 区域限制在该区域CopyMode指定图形的复制模式Font指定文本字体,通过Tfont对象的属性设置HandleCanvas的设备 描述表句柄,可直接调用WindowsAPIPen指定画笔类型,通过TPen对象的属性设置Pe
5、nPos设置当前画笔的x、y坐标Pixel设置当前区域象素的颜色10.2.1 TCanvas图形类10.2.1.2 Canvas的主要方法 方 法功 能 Are画圆弧 BrushCopy以透明背景显示位图 CopyRect复制剪裁矩形内的图形到画布 Draw在画布上复制内存中的图形 DrawFocusRec在当前矩形区域绘制矩形 Ellipse画椭圆 ,并用当前画刷填充 FillRect填充画布上指定的矩形 FloodFill填充画布上的封闭多边形 LineTo从当前画笔位置向指定的(x、y)坐标点画直线 MoveTo设置当前画笔位置 Pie画饼形图 PolyBezier画Bezier曲线10
6、.2.1 TCanvas图形类10.2.1.2 Canvas的主要方法 方 法功 能 Polygon画多边形,并用当前画刷填充 Polyline画折线,不自动闭 合 Rectangle画矩形轮廓线,并用当前画刷填充 Refresh取消选定的画笔、画刷和字体,但不改变其属性值 RoundRect画园角填充矩形 StretchDraw从内存中复制位图到画笔上,尺寸可伸缩 TextExtent返回传入Text参数的AnsiString类字符串的高度和宽度 TextHeight返回传入Text参数的AnsiString类字符串的高度 TextOut使用当前字体在画笔上输出文本 TextRect在剪裁矩
7、形内输出文本 TextWidth返回传入Text参数的AnsiString类字符串的宽度10.2.1 TCanvas图形类10.2.1.3 图形语句示例 (1)绘直线Canvas-MoveTo(x1, y1);Canvad-LineTo(x2, x2); (2)绘矩形Canvas-Rectangle(x1,y1, x2,y2); (3)绘椭圆Canvas-Ellipse(x1,y1, x2,y2); (4)绘园角矩形Canvas-RoundRect(x1,y1, x2,y2); (5)绘园弧Canvas-Arc(x1,y1, x2,y2, x3,y3, x4,y4); (6)绘多边形Canva
8、s-Polygon(const Windows:Tpoint *Points, const int Points_Size); (7)绘文本Canvas-TextOut(int x, int y, const AnsiString Text);10.2.2 TPen类Pen属性的值为一个TPen类,使用TPen类可以描述Windows的笔(Pen)属 性用以控制画布上绘制的线或几何图形(shape)的边框线。常用属性有: Width:线宽(象素数),默认值为1; Color:其属性值是一个TColor对象,TColor对象有三种赋值方式:(1)RGB: Cancas-Pen-Color = R
9、GB(255,0,0);/红色(2)颜色常量:Canvas-Pen-Color = clGreen; /绿色(3)二进制码:Canvas-Pen-Color = 0x00FF0000;/蓝色 Style:设置线型Canvas-Pen-Style = psClear; /不绘图形轮廓Canvas-Pen-Style = psDash; /短划线Canvas-Pen-Style = psDashDot; /点划线Canvas-Pen-Style = psDashDotDot; /双点划线Canvas-Pen-Style = psDot; /点线Canvas-Pen-Style = psInside
10、Frame; /实线,宽度大于1时可变色Canvas-Pen-Style = psSolid; /实线 Mode:确定笔的颜色与画布颜色的作用规律。10.2.3 TBrush类TBrush类用于图形填充,如填充多边形、圆形、矩形等。可选择填充 图案和颜色。(1)图案设置Canvas-Brush-Style = bsSolid; /实心填充Canvas-Brush-Style = bsClear; /不填充Canvas-Brush-Style = bsBDiagonal; /斜线填充Canvas-Brush-Style = bsFDiagonal; /反斜线填充Canvas-Brush-Styl
11、e = bsCross; /十字线填充Canvas-Brush-Style = bsDiagCross; /交叉线填充Canvas-Brush-Style = bsHorizotal; /水平线填充Canvas-Brush-Style = bsVertical; /垂直线填充(2)颜色设置Canvas-Brush-Color = clTeal; /紫色刷子10.3 图形图像组件 10.3.1 TMainMenu组件 10.3.2 TImage组件 10.3.3 TShape组件 10.3.4 文件I/O组件10.3.1 TMainMenu组件 TMainMenu组件为菜单设计控件。 它打开一个
12、MainMenu窗体,用户可以灵活的用它设计 程序菜单。10.3.2 TImage组件TImage组件是一个显示图像和绘制图形的组件。在设计阶段以虚框 显示,运行时并不可见。 它支持JPG、BMP、ICO、EMF等多种格式的图像文件。 TImage组件的基本属性: AutoSize:确定图像组件是否调整自身大小以适应所包含的图像。 Canvas:定义一个TCanvas对象,提供一个绘图界面,可用来显示 位图、绘制图像、输出文字。 Center:指定图像是否居中显示。 Picture:确定在TImage中显示的图像。 Stretch:确定在TImage中显示的图像是否调整自身以适应TImage
13、的大小。 Transparent:确定TImage组件的背景是否透明。10.3.3 TShape组件TShape是一个窗口装饰组件。可以在窗口上画出各种几何图形、不同底 纹和边框的图形。TShape组件的常用属性:Brush:指定填充Shape组件的颜色和样式,其两个子属性为Color和 Style。Pen:指定绘制Shape边框所使用的画笔。Pen的子属性有:Color、Mode 、Style和Width。Shape:设定TShape组件的形状: stRectangle(矩形) stSquare(正方形) stRoundRect(园角矩形) stRoundSquare(园角正方形) stCi
14、rcle(圆形) stEllipse(椭圆)10.3.4 文件I/O组件TOpenDialog组件和TSaveDialog组件 该两组件分别对应于打开文件和保存文件对话框。该两对话框外 形一样,唯一的差别在于前者包含的是打开文件按钮,后者包含的 是保存文件按钮。打开或保存10.4 BCB图形程序示例绘图示例实现了一个简单交互式绘图软件,具有以下功能: 1、绘制各种图形实体(园、椭圆、直线、矩形、扇形、饼图等); 2、可改变绘图颜色 3、可改变绘图线型和线宽 4、可用多种方式和不同颜色填充封闭实体 5、绘制的图形可以存盘(以图像方式) 6、可剪切、复制、粘帖图像 7、展示了几个绘图示例 软件包含了以下组件: TmainMenu:菜单组件 TImage: 图像组件 TOpenDialog:打开文件组件 TSaveDialog:存文件组件