C Builder初學問與答8

2021-04-14 00:33:25 字數 3730 閱讀 1728

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按鈕就可以選擇載入要顯示的了。

答:如果是在程式執行期間載入,那麼可以使用tpicture類的方法loadfromfile,這個方法可以載入儲存在磁碟上的影象檔案。例如要載入d盤根目錄下的picture.bmp,可以這樣呼叫:

image1->picture->loadfromfile("d://picture.bmp");

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表示圓角矩形。

(4)stroundsquare表示圓角正方形。

(5)stsquare表示正方形。

(6)stcircle表示圓。

在設計階段,你可以使用滑鼠改變圖形的尺寸。在執行期間,可以通過height和width屬性改變圖形的尺寸。

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屬性。

它可以取這樣一些值:

pmblack:表示用黑色繪圖;

pmwhite:表示用白色繪圖;

pmnot:畫筆繪製的點的顏色與原有的顏色相反;

pmcopy:畫筆用color屬性中定義的顏色繪圖。

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)。 

C Builder初學問與答1

一直以來都想寫一點為bcb初學者快速入門的東西,前不久寫了幾篇 閒談bcb 想把自己學習bcb中如何來解決難點的方法說給大家,沒想到被罵得不成樣子。本想不寫了,但覺得這些東西留下來能做什麼呢?還是用另一種方法來重新演譯我的思維吧,最近有些忙,那幾篇沒有寫完的文章,我也會盡快寫完的,至於 深入qr 我...

C Builder初學問與答3

21 問 在進行 windows 程式介面設計中,經常會用到按鈕,在 c builder 中,按鈕一定是通過按鈕元件來實現的嗎?答 是的,並且 c builder 的按鈕類元件十分豐富。bcb 提供了兩類按鈕類元件 一類是執行類按鈕,另一類是資訊類按鈕。所謂執行類按鈕是指它們通常用來啟動程式執行的,...

C Builder初學問與答11

11.工具條元件 87 問 工具條是windows程式設計經常要用的,c builder能不能實現這個功能呢?答 當然可以,工具條是由許多具有圖形的按鈕組成的,這些按鈕被分隔符分隔成許多組,每個組都能夠完成特定的工作。工具條上的按鈕具有與點陣圖按鈕相似的特性 可以擁有多個位圖,當按鈕處於不同狀態時,...