《CBuilder基本图形编程.ppt》由会员分享,可在线阅读,更多相关《CBuilder基本图形编程.ppt(20页珍藏版)》请在三一办公上搜索。
1、C+Builder 基本图形编程,薛涛西安交通大学计算机教学实验中心,显示图形的最简单办法,Shape构件可以将简单形体加到窗体上。使用Shape构件很容易,只要放到窗体上并根据需要改变Brush、Pen和Shape属性即可。可以绘制圆、椭圆、矩形、正方形和带圆角的矩形。改变Brush属性可以修改形体的背景颜色,改变Pen属性可以改变形体边框的颜色或厚度。,显示图形的最简单办法,Image构件可以在窗体上显示位图,这个构件适合许多图形操作,包括窗体的位图背景。Image构件的Picture属性是TPicture类的实例,可以在设计时通过对象观察器选择图形,也可以在运行时装入图形。例如,可以在运
2、行时改变图形如下:Imagel-Picture-Bitmap-LoadFromFile(bkgnd.bmp);Stretch属性确定图形可否缩放成适合构件的尺寸。Center属性确定位图是否在构件上居中显示。AutoSize属性可以迫使构件根据图形尺寸调整尺寸。,显示图形的最简单办法,PaintBox构件,这个构件提供了画布,可以在窗体的限定区域内绘图。PaintBox构件唯一重要的属性是Canvas属性,是TCanvas类的实例。C Builder应用程序中大多数绘图都是对这个类进行的,TCanvas类,TCanvas类的主要属性属性 说明Brush 用于填充到形体的画刷颜色或图案ClipR
3、ect 画布的当前剪取矩形,将绘图限制在这个矩形内。这个属性是只读的CopyMode 确定如何进行绘图(正常、逆向、xor,等等)Font 画布绘制文本所用的字体Handle 画布的句柄(HDC),用于直接调用Windows APIPen 确定画布上绘图的线型和颜色PanPos 当前绘图位置的x和y坐标Pixels 画布像素的数组,TCanvas类,TCanvas类的主要方法方法 说明Arc 当前画笔在画布上画圆弧BrushCopy 用透明背景显示位图CopyRect 将部分图形复制到画布上Draw 将内存中的图形复制到画布上Ellipse 用当前画笔在画布上画椭圆并用当前画刷填充FloodF
4、ill 用当前画刷填充画布的一个区域LineTo 从当前绘图位置向X、Y坐标指定的位置画直线MoveTo 设置当前绘图位置Pie 在画布上画一个饼形图Polygon 用一组点在画布上画多边形,并填上当前画刷,TCanvas类,TCanvas类的主要方法方法 说明Polyline 用当前画笔用一组点在画布上画折线,不自动闭合Rectangle 用当前画笔在画布上画矩形外形线,并用当前画刷填充RoundRect 画带圆角的填充矩形StretchDraw将位图从内存中复制到画布上。位图根据目标矩形的尺寸伸缩TextExtent 返回传入Text参数的字串宽度和高(像素数),宽度用画布当前字体计算Te
5、xtHeight 返回传入Text参数的字串宽度(像素数),宽度用画布当前字体计算TextOut 用当前字体在画布的指定位置上写字TextRect 在剪取矩形中写字,在屏幕上绘制蓝边红黑的圆CanvasBrushColor=clRed;CanvasPenColor=clBlue;CanvasEllipse(20,20,120,120);,GDI对象,。最常用的GDI对象有画笔、画刷和字体,其它GDI对象有调用板、位图和区域。,画笔,画笔定义用于画线的对象。线可以是从一点到另一点的单线,也可以是矩形、椭圆和多边形的边。画笔通过TCanvas类的Pen属性访问。Pen属性是TPen类的实例。,TP
6、en,TPen的属性属性 说明Color 设置线的颜色Handle 画笔的句柄(HPEN),用于直接调用GDI对象Mode 确定画线的方法(正常、逆、xor,等 等)Style 笔的样式,实线、点线、划线、点划线、清除,等等Width 画笔宽度(像素数),下例是画红色划线的代码:Canvas-Pen-Color=clRed;Canvas-Pen-Style=psDash;Canvas-MoveTo(20,20);Canvas-LineTo(120,20);为了测试这个代码,在窗体上放一个按钮并将代码输入按钮的OnClick处理器中。单击按钮时,窗体上即画出一条直线。提示:为了试验TPen的不同
7、属性,可以在窗体上放一个Shape构件并修改形体的Pen属性,这在检查TPen类Mode属性的效果时特别方便。,画刷,画刷表示图形形体的填充区。绘制椭圆、矩形和多边形时,形体会用当前画刷填充。TCanvas类的Brush属性可以控制画刷的样子。Brush属性是TBrush类的实例。,TBrush,TBrush类的属性属性 说明Bitmap 用作画刷背景的位图,对于Windows 95,位图不得大于8x8Color 设置画刷颜色Handle 画刷句柄(HBRUSH),用于直接调用GDIStyle 画刷样式,包括实心、清除或几种图案之一,缺省情况下,Style属性设置为bsSolid。如果要填充图
8、案,则要将Style属性设置为几种图案之一(bsHorizontal、bsVertical、bsFDiagonal、bsBDiagonal、bsCross或bsDiagCross)。,下例用45度阴影线在窗体上画圆:Canvas-Brush-Color=clBlue;Canvas-Brush-Style=bsDiagCross;Canvas-Ellipse(20,20,220,220);,字体,为了改变画布的字体,只要用下列代码:Canvas-Font-Name=Courier New;Canvas-Font-Size=14;Canvas-Font-Style=fsBold;Canvas-Te
9、xtOut(20,20,Testing);,绘制文本TextOut和TextRect(),TextOut()方法是画布上写字的是最基本方法,只要传入X位置、Y位置和要显示的文本即可。例如:Canvas-TextOut(20,20,Mason P.Reisdorph);TextRect()方法可以指定剪取矩形和显示的文本,这个方法可以将文本限定在指定边界内,边界外的文本均被剪去。下列码段保证显示的文本不超过100像素:Canvas-TextRect(Rect(20,50,120,70),20,50,This is a very long line that might get clipped.)
10、;TextOut()方法和TextRect()都只能绘制一行文本,不能进行换行。,文本背景,改变文本背景颜色比较容易,这里可以让文本背景颜色与文本颜色相同,做法如下:Canvas-Brush-Color=Color;最好能使文本背景透明,方法如下:TBrushStyle oldStyle;oldStyle=Canvas-Brush-Style;Canvas-Brush-Style=bsClear;Canvas-TextOut(20,20,This is a test.);Canvas-Brush-Style=oldStyle;首先要保存当前画刷样式,然后将画刷样式设置为透明(bsClear)。显示文本后,要恢复当前画刷样式。,Example,用键盘方向键移动一个圆圈吹泡泡程序在窗口中点击鼠标左键,则在点击位置显示一个红色泡泡修改上题,使得以前显示的泡泡不消失(即仍然可见)修改上题,使得所有显示的泡泡自动向上漂浮直到到达边界修改上题,使得点击鼠标右键所选中的泡泡消失划一个折线图,