程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi 圖形設計(3)

Delphi 圖形設計(3)

編輯:Delphi

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的完全一致,只是功能正好相反。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved