Delphi 图形设计(3)

页面导航:首页 > 软件编程 > Delphi > Delphi 图形设计(3)

Delphi 图形设计(3)

来源: 作者: 时间:2016-01-18 15:41 【

10.3 图 像 处 理 Delphi提供一组图形图像组件和一组图像类用于图形及图像处理。 常用的图形图像组件有Shape、PaintBox和Image组件,相关的图像类有TGraphic、TPicture和TBitmap。10.3.1 图形图像组

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

     常用的图形图像组件有Shape、PaintBox和Image组件,相关的图像类有TGraphic、TPicture和TBitmap。

 

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

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

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

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

     Shape组件的Width、Height、Left和Top属性决定图形的大小和位置;

   Brush和Pen属性的意义与TCanvas中的完全相同;

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

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

(1)Picture属性。

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

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

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

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

(2)AutoSize属性。

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

(3)Stretch属性。

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

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

(4)Center属性。

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

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

(5)Transparent属性。

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

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

 

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

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

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

1.TGraphic类及其子类
     Delphi能处理的图像文件格式主要有4种:

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

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

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

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

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

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

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

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

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

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

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

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

2.TPicture类
使用TBitmap、TIcon和TMetafile类只能处理固定格式的图像文件,而TPicture类可以处理多种类型的图像文件。

TPicture类有一个Graphic属性,类型为TGraphic,能容纳TGraphic的所有子类对象。同时,TPicture中也有LoadFromFile和SaveToFile方法,它们与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中的Draw和StretchDraw方法,定义如下:

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
 打印机换页,并将Canvas的Pen属性值回到起始位置(0,0)
 
PageHeight
 返回页的高度
 
PageNumber
 返回正在被打印的页号
 
TextOut
 使文本被发送到Canvas
 

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

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

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

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

 

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<