
8.图形类组件
59)问:Windows是一个图形系统,C++Builder是怎样处理图形的呢?
答:C++Builder通过提供图形组件来处理图形,其中比较常用的有图像组件(Image)、几何图形组件(Shape)和画板组件(PaintBox)。前两个组件位于Additional页中,画板组件位于System页中。
在BCB中,Form、Image、BitMap、PaintBox等都具有绘图能力,这些组件中都有Canvas属性。
60)问:图像控件有哪些特殊的属性?
答:图像组件可以显示各种以文件形式存储在磁盘上的图形。它有这样一些特殊的属性。
AutoSize属性,当属性值为True时,图像组件会自动调节尺寸以便适应图像组件的大小。缺省值为True。
Stretch属性,当该属性为True时,图像的尺寸自动调整并填满整个图像组件的范围。但ICO文件无法产生这种效果。缺省值为False。
Transparent属性,确定是否允许图像中指定的颜色透明,从而使组件下面的物体显示出来。缺省值为False。
Center属性,当该属性为True时,图像居中显示;否则,从左上角开始显示。
属性Picture,你可以在设计阶段利用这个属性指定所要显示的图片,也可以在运行期间再显示。前面一种情况下,你可以单击Picture属性的Value列中的省略号按钮,这时会出现一个图片编辑对话框,单击对话框中的Load按钮就可以选择载入要显示的图片了。
61)问:如果是在程序运行期间载入图片,应该怎么办?
答:如果是在程序运行期间载入图片,那么可以使用TPicture类的方法LoadFromFile,这个方法可以载入存储在磁盘上的图像文件。例如要载入D盘根目录下的picture.bmp,可以这样调用:
Image1->Picture->LoadFromFile("d:\\picture.bmp");
这个控件可处理的图片文件的类型有:.BMP文件、.ICO文件、.EMF和.WMF等多种图像文件。如果你试图载入一种无法识别的文件类型,将会产生异常错误。
62)问:能说一下AutoSize与Stretch的区别吗?
答:好的,在窗体上放置两个图像组件,将左边的图像组件的AutoSize属性为True,所以载入任何图片后,组件的尺寸与图片的尺寸完全相同。而且如果你增大或减小图像组件的尺寸,图片的显示仍然不变。将右边的图像组件的AutoSize属性设置为False,将它的Stretch属性设置为True。当你增大或减小图像组件的尺寸,图片将按比例增大或缩小,也就是说图片始终充满整个组件。
63)问:TShape控件有什么重要属性?
答:这个组件可以显示一些常见的几何图形,例如矩形、圆、椭圆等。几何图形组件有几个比较重要的属性:Brush,Pen 和Shape。
Brush属性,用来设置几何图形内部的填充特性,包括填充的图案(Style)和颜色(Color)等。
Pen属性,用来设置几何图形的外框特性,包括画笔的颜色(Color)、线型(Style)和线宽(Width)及Mode关系等。
属性Shape,用来指出所显示的几何图形类型。这个属性可以有六种不同的值,分别表示六种不同的几何图形;
(1)stEllipse表示椭圆。
(2)stRectangle表示矩形。
(3)stRoundRect表示圆角矩形。