Delphi 图形设计(3)

10.3 

        Delphi提供一组图形图像组件和一组图像类用于图形及图像处理。

     常用的图形图像组件有ShapePaintBoxImage组件,相关的图像类有TGraphicTPictureTBitmap

 

10.3.1  图形图像组件

1PaintBox绘图区域组件

     Delphi除了允许在Form上直接绘制图形外,还允许使用PaintBox组件来作图。PaintBox 组件位于System选项卡中。

   用PaintBox绘制图形与在Form上绘制图形的方法相似,不同的是在程序设计阶段,可以直接设定PaintBox的大小和位置。

   在使用Canvas属性绘制图形时,图形的坐标都是相对于PaintBox组件的,即PaintBox的左上角为(0,0) 的坐标,而不用管PaintBoxForm上的位置,同时当图形的大小超出PaintBox组件区域时,超出部分将自动被切割。

2Shape显示图形组件

     Shape组件用于显示简单的图形,如矩形、椭圆等,位于Additional选项卡中。

     Shape组件的WidthHeightLeftTop属性决定图形的大小和位置;

   BrushPen属性的意义与TCanvas中的完全相同;

   Shape属性决定所显示图形的形状,取值为stEllipse(椭圆)、stCircle(圆形)、stRectangle(矩形)、stRoundRect(圆角矩形)、stSquare(正方形)或stRoundSquare(圆角正方形)。

3Image绘图及显示图像组件

    Image组件除了可以绘图外,还可用于显示各种不同格式的图像,位于Additional选项卡上。其主要属性如下:

1Picture属性。

    Picture属性保存Image组件所要显示的图像文件。使用该属性编辑器中的Load按钮,可装入.bmp.ico.jpg.jpeg.emf.wmf等图像文件,不能装入.gif图像文件。

程序运行时,可使用Picture属性的LoadFromFileSaveToFile方法实现图像文件的装入与保存。例如:

Image1.Picture.LoadFromFile('c:\My Documents\fly.bmp');    //装入文件

Image1.Picture.SaveToFile('d:\temp\fly.bmp');                //保存文件

2AutoSize属性。

AutoSize属性确定是否调整Image组件的尺寸与图像的大小一致。当取值为True时,调整Image组件的尺寸与图像的大小一致,以显示完整的图像。默认值为False

3Stretch属性。

Stretch属性确定是否改变图像尺寸以适应Image组件的大小。

     当取值为True时,图像尺寸与Image的大小一致。如果改变Image组件的大小,图像大小也会随之变化。默认值为False。该属性对图标(ICO)格式的图像无效。

4Center属性。

Center属性控制图像是否居中显示。

     当取值为True时,图像在Image组件居中显示。默认值为False。当AutoSizeStretch的取值均为False时,该属性设置有效。

5Transparent属性。

       Transparent属性确定Image组件是否透明

    当取值为True时,Image组件透明,表示允许在Image组件下面的其他组件可见,否则不透明。该属性只对bitmap位图文件有效。

 

4.图像对话框

Delphi的标准对话框组件OpenPictureDialogSavePictureDialog是分别用于打开和保存图像文件的两个对话框

    这些对话框提供对图像文件的预览功能,提供图像文件的过滤功能,默认的图像文件格式为*.bmp*.ico*.emf*.wmf*.jpg等。

10.3.2  图像类

    用Canvas绘制出来的图形只能是一些简单图形,程序中如果需要用到一些复杂的图像,就必须从图像文件中调用。Delphi的图像类具有处理BMPICOJPG等图像文件的能力。

1TGraphic类及其子类

     Delphi能处理的图像文件格式主要有4种:

  Bitmap位图文件、Icon图标文件、Metafile图元文件和JPEG图像文件,对应的类分别为TBitmapTIconTMetafileTJPEGImage,它们都是TGraphic类的子类

TGraphic类中处理图像文件的属性和方法如下所示。

·    Empty只读属性:取值为True时,没有图像数据。

·    WidthHeight属性:控制图像的宽度和高度。

·    LoadFromFileSaveToFile方法:读取和保存图像文件。

TGraphic类中定义的LoadFromFileSaveToFile方法是虚方法,读取和保存文件的具体操作由其子类实现。

    例如,TBitmap类的LoadFromFileSaveToFile方法只能读写*.bmp文件,

          TIcon类的LoadFromFileSaveToFile方法只能读写*.ico文件等。这两个方法都只有一个字符串类型的参数,指出文件的路径,路径中包含文件名,且文件名的后缀名必须与子类的类型相对应,否则将导致错误。

TBitmap的主要属性和方法如下所示。

·    Canvas属性:返回一个TCanvas类实例,用于在位图上绘制各种图形。

·    Create方法:创建一个TBitmap类实例。

·    Assign方法:将一个图像数据赋给当前TBitmap类对象。

2TPicture

使用TBitmapTIconTMetafile类只能处理固定格式的图像文件,而TPicture类可以处理多种类型的图像文件。

TPicture类有一个Graphic属性,类型为TGraphic,能容纳TGraphic的所有子类对象。同时,TPicture中也有LoadFromFileSaveToFile方法,它们与TGraphic中文件处理方法不同的是,根据图像文件的后缀名,自动选择合适的文件类型保存或读取图像文件。

3.读取、显示与保存图像

使用TBitmap对象,可读取图像文件,将图像文件显示在窗体上,也可将窗体上的图像文件保存成.bmp文件。例如:

var

  bmp1: TBitmap;

bmp1:=TBitmap.Create;                              //创建TBitmap实例

bmp1.LoadFromFile('C:\WlNDOWS\Clouds.bmp');     //只能读取BMP图像

Form1.Canvas.Draw(0,0,bmp1);                       //图像显示在窗体上

bmp1.Free;                                           //释放图像对象

在窗体或组件上显示图形可使用Canvas中的DrawStretchDraw方法,定义如下:

procedure Draw(X,Y: double; Graphic: TGraphic);

procedure StretchDraw(const Rect: TRect; Graphic: TGraphic);

 

4.打印图像TPrinter

          Delphi中使用TPrinter对象可以访问打印机端口

      如果要使用TPrinter对象打印图像,必须在程序的uses语句中添加Printers单元,这样系统就会自动声明一个TPrinter类的对象printer,之后通过printer可引用TPrinter类的属性。

TPrinter的主要属性见表10-5

10-5 TPrinter的主要属性

   

    

BeginDoc

开始打印

Canvas

在打印一页之前,Canvas在内存中创建这个页所在的位置

EndDoc

结束打印,在调用EndDoc之前并不进行实际的打印操作

NewPage

打印机换页,并将CanvasPen属性值回到起始位置(0,0)

PageHeight

返回页的高度

PageNumber

返回正在被打印的页号

TextOut

使文本被发送到Canvas

TPrinter的主要方法有GetPrinter( )SetPrinter( ),这两个方法用来获取和设置打印机的一些信息GetPrinter方法声明如下:

procedure GetPrinter(ADevice,ADriver,APort:PChar;var ADeviceMode: THandle);

其中,参数分别表示设备的名称、驱动文件名、端口号以及指向打印机的DevMode结构的句柄变量。

SetPrinter方法的声明格式与GetPrinter的完全一致,只是功能正好相反。

你可能感兴趣的:(Delphi,GDI+)