在Windows中有各種GUI對象(不要和C++對象混淆),當你在進行繪圖就需要利用這些對象。而各種對象都擁有各種屬性,下面分別講述各種GUI對象和擁有的屬性。
字體對象CFont用於輸出文字時選用不同風格和大小的字體。可選擇的風格包括:是否為斜體,是否為粗體,字體名稱,是否有下劃線等。顏色和背景色不屬於字體的屬性。關於如何創建和使用字體在2.2 在窗口中輸出文字中會詳細講解。
刷子CBrush對象決定填充區域時所采用的顏色或模板。對於一個固定色的刷子來講它的屬性為顏色,是否采用網格和網格的類型如水平的,垂直的,交叉的等。你也可以利用8*8的位圖來創建一個自定義模板的刷子,在使用這種刷子填充時系統會利用位圖逐步填充區域。關於如何創建和使用刷子在2.3 使用刷子,筆進行繪圖中會詳細講解。
畫筆CPen對象在畫點和畫線時有用。它的屬性包括顏色,寬度,線的風格,如虛線,實線,點劃線等。關於如何創建和使用畫筆在2.3 使用刷子,筆進行繪圖中會詳細講解。
位圖CBitmap對象可以包含一幅圖像,可以保存在資源中。關於如何使用位圖在2.4 在窗口中繪制設備相關位圖,圖標,設備無關位圖中會詳細講解。
還有一種特殊的GUI對象是多邊形,利用多邊形可以很好的限制作圖區域或是改變窗口外型。關於如何創建和使用多邊形在2.6 多邊形和剪貼區域中會詳細講解。
在Windows中使用GUI對象必須遵守一定的規則。首先需要創建一個合法的對象,不同的對象創建方法不同。然後需要將該GUI對象選入DC中,同時保存DC中原來的GUI對象。如果選入一個非法的對象將會引起異常。在使用完後應該恢復原來的對象,這一點特別重要,如果保存一個臨時對象在DC中,而在臨時對象被銷毀後可能引起異常。有一點必須注意,每一個對象在重新創建前必須銷毀,下面的代碼演示了這一種安全的使用方法:
OnDraw(CDC* pDC)
{
CPen pen1,pen2;
pen1.CreatePen(PS_SOLID,2,RGB(128,128,128));//創建對象
pen2.CreatePen(PS_SOLID,2,RGB(128,128,0));//創建對象
CPen* pPenOld=(CPen*)pDC->SelectObject(&pen1);//選擇對象進DC
drawWithPen1...
(CPen*)pDC->SelectObject(&pen2);//選擇對象進DC
drawWithPen2...
pen1.DeleteObject();//再次創建前先銷毀
pen1.CreatePen(PS_SOLID,2,RGB(0,0,0));//再次創建對象
(CPen*)pDC->SelectObject(&pen1);//選擇對象進DC
drawWithPen1...
pDC->SelectObject(pOldPen);//恢復
}
此外系統中還擁有一些庫存GUI對象,你可以利用CDC::SelectStockObject(SelectStockObject( int nIndex )選入這些對象,它們包括一些固定顏色的刷子,畫筆和一些基本字體。