程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ Builder 初學問與答(八)

C++ Builder 初學問與答(八)

編輯:C++入門知識
  8.圖形類組件
  59)問:Windows是一個圖形系統,C++Builder是怎樣處理圖形的呢? <!-- frame contents --> <!-- /frame contents -->   答: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表示圓角矩形。
  
   更多內容請看C/C++技術專題專題,或   (4)stRoundSquare表示圓角正方形。   (5)stSquare表示正方形。   (6)stCircle表示圓。   在設計階段,你可以使用鼠標改變圖形的尺寸。在運行期間,可以通過Height和Width屬性改變圖形的尺寸。 <!-- frame contents --> <!-- /frame contents -->   64)問:屬性Brush前面有一個加號,它是什麼意思?   答:它表示這個屬性是可以展開的,也就是說,它還包含一些子屬性。單擊加號,可以發現它的子屬性是:Color和Style。   Color屬性包含一系列C++Builder預定義的顏色,你可以從中為顯示的幾何圖形選擇一種填充顏色。   Style屬性確定了幾何圖形的填充樣式,它可以分別取這樣8種值:bsBDiagonal, bsClear, bsCross, bsDiagCross, bsDiagonal, bsHorizontal, bsSolid和bsVertical。   屬性Pen也象屬性Brush一樣有子屬性。它的子屬性是Color, Mode, Style和Width。其中最常用的就是Style和Width,它們分別表示線型和線寬。子屬性Style可以取這樣一些值來畫邊框:   psSolid
  
     表示實線。
  
  psDash
  表示破折號。
  
  psDot
  表示圓點。
  
  psDashDot
  表示破折號和圓點。
  
  psDashDotDot
  表示破折號、圓點、圓點。
  
  psClear
  表示沒有線。
  
  psInsideFrame
  表示內框實線。
  
  65)問:這個畫板組件有什麼作用?   答:畫板組件主要為用戶提供一塊作圖區域,用戶可以使用繪圖語句在這個作圖區域上畫出各種不同的圖形。   要注重的是,由於畫板組件沒有邊界,所以通常應該把它放在一個有邊界的容器類組件上。   畫板組件主要使用Canvas屬性來進行繪圖工作。Canvas(畫布)是類TCanvas的對象,類TCanvas包含繪圖中使用的各種方法和屬性。下面我們首先介紹Canvas對象的各種屬性。   畫筆(Pen)  Canvas對象中有一個畫筆成員,它確定繪制幾何圖形時使用的畫筆類型。剛才我們介紹了畫筆的線型和線寬。   畫筆的Color屬性是繪圖時使用的前景色。   畫筆的屬性Mode用來確定畫筆與屏幕上原有點的混合方式。可結合當前的顏色、屏幕的顏色或它們的反轉值,對線段的顏色重新定義。但不改變Color屬性。
  系列文章索引:
  
  C++ Builder 初學問與答(一)
  C++ Builder 初學問與答(二)
  C++ Builder 初學問與答(三)
  C++ Builder 初學問與答(四)
  C++ Builder 初學問與答(五)
  C++ Builder 初學問與答(六)
  C++ Builder 初學問與答(七)
  

   更多內容請看C/C++技術專題專題,或   它可以取這樣一些值:   pmBlack:表示用黑色繪圖;   pmWhite:表示用白色繪圖;   pmNot:畫筆繪制的點的顏色與原有的顏色相反;   pmCopy:畫筆用Color屬性中定義的顏色繪圖。 <!-- frame contents --> <!-- /frame contents -->   PmNotCopy:畫筆用Color屬性中定義的顏色的反轉色繪圖;   PmMergePenNot:畫筆用Color屬性中定義的顏色與屏幕顏色的反轉色結合後繪圖;   PmMaskNotPen:畫筆用屏幕顏色與Color屬性中定義的顏色結合後繪圖;   PmMergeNotPen:畫筆用屏幕顏色與Color屬性中定義的顏色的反轉值結合後繪圖。   Brush屬性,刷子屬性在前面已經具體介紹過,它可以確定圖形的填充模式和填充顏色。   屬性ClipRect,用來確定繪圖區域的范圍。任何超出這個范圍的圖形不會顯示。   66)問:在Canvas對象上,我們可以用怎樣的方法來完成作圖工作?   答:Canvas對象有一些基本做圖方法:   1.首先是MoveTo方法,MoveTo將筆的當前位置設置到點(x,y)處,筆的當前位置將保存到PenPos屬性中,要注重的是,改變筆的當前位置用MoveTo方法,而不要修改PenPos屬性。函數形式為MoveTo(x,y)。   2.LineTo方法,用來完成從當前位置畫一條直線至點(x,y),並把筆的位置移動到這一點。函數形式為LineTo(x,y)。   在畫線時一般首先使用方法MoveTo移動線的起始點,然後再使用方法LineTo畫直線。   3.方法Rectangle用來在畫布上用當前畫刷繪制矩形,其中x1,y1是矩形的左上角坐標,x2,y2是矩形的右下角坐標。因為正方形實際上就是一種非凡的矩形,所以你可以使用這個方法畫出正方形。函數形式為Rectangle(x1,y1,x2,y2)。   4.方法Ellipset用來在畫布上給定的矩形邊界上畫一個橢圓,其中x1,y1是邊界矩形的左上角坐標,x2,y2是邊界矩形的右下角坐標。所謂邊界矩形就是圓或橢圓的外接矩形。函數形式為Ellipse(x1,y1,x2,y2)。   5.方法RoundRect用來繪制圓角矩形:其中x1,y1,x2,y2分別是圓角矩形虛擬的左上角和右下角。x3,y3是圓角的長短半徑。函數形式為RoundRect(x1,y1,x2,y2)。   6.方法Polygon可以畫出多邊形。函數形式為Polygon(Tpoint p,int Point_Size)。   參數P是類Tpoint的一個數組,每一個Tpoint對象包含一個點的X和Y坐標。Points_Size用來指示數組的大小。這個是實心多邊形,Polyline是畫多邊形的,二者用法基本相同。   67)問:在顯示區域輸出文本信息,我們是不是還象DOS下用printf函數來實現?   答:printf是一個控制台函數,不能在窗口程序中使用,一般我們TextOut輸出文本,其聲明:void _fastcall TextOut(int X,int Y,const AnsiString Text);其中x,y是輸出字符串起始點的坐標,text是要輸出的文本。當然你要用Lable也是可以的J   (待續)
   更多內容請看C/C++技術專題專題,
   或
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved