明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

與GUI有關的各種對象

[摘要]在Windows中有各種GUI對象(不要和C++對象混淆),當你在進行繪圖就需要利用這些對象。而各種對象都擁有各種屬性,下面分別講述各種GUI對象和擁有的屬性! ∽煮w對象CFont用于輸出文字時選用不同風格和大小的字體。可選擇的風格包括:是否為斜體,是否為粗體,字體名稱,是否有下劃線等。顏色和背...
在Windows中有各種GUI對象(不要和C++對象混淆),當你在進行繪圖就需要利用這些對象。而各種對象都擁有各種屬性,下面分別講述各種GUI對象和擁有的屬性。

  字體對象CFont用于輸出文字時選用不同風格和大小的字體?蛇x擇的風格包括:是否為斜體,是否為粗體,字體名稱,是否有下劃線等。顏色和背景色不屬于字體的屬性。關于如何創(chuàng)建和使用字體在2.2 在窗口中輸出文字中會詳細講解。

  刷子CBrush對象決定填充區(qū)域時所采用的顏色或模板。對于一個固定色的刷子來講它的屬性為顏色,是否采用網(wǎng)格和網(wǎng)格的類型如水平的,垂直的,交叉的等。你也可以利用8*8的位圖來創(chuàng)建一個自定義模板的刷子,在使用這種刷子填充時系統(tǒng)會利用位圖逐步填充區(qū)域。關于如何創(chuàng)建和使用刷子在2.3 使用刷子,筆進行繪圖中會詳細講解。

  畫筆CPen對象在畫點和畫線時有用。它的屬性包括顏色,寬度,線的風格,如虛線,實線,點劃線等。關于如何創(chuàng)建和使用畫筆在2.3 使用刷子,筆進行繪圖中會詳細講解。

  位圖CBitmap對象可以包含一幅圖像,可以保存在資源中。關于如何使用位圖在2.4 在窗口中繪制設備相關位圖,圖標,設備無關位圖中會詳細講解。

  還有一種特殊的GUI對象是多邊形,利用多邊形可以很好的限制作圖區(qū)域或是改變窗口外型。關于如何創(chuàng)建和使用多邊形在2.6 多邊形和剪貼區(qū)域中會詳細講解。

  在Windows中使用GUI對象必須遵守一定的規(guī)則。首先需要創(chuàng)建一個合法的對象,不同的對象創(chuàng)建方法不同。然后需要將該GUI對象選入DC中,同時保存DC中原來的GUI對象。如果選入一個非法的對象將會引起異常。在使用完后應該恢復原來的對象,這一點特別重要,如果保存一個臨時對象在DC中,而在臨時對象被銷毀后可能引起異常。有一點必須注意,每一個對象在重新創(chuàng)建前必須銷毀,下面的代碼演示了這一種安全的使用方法:

OnDraw(CDC* pDC) {
     CPen pen1,pen2;
     pen1.CreatePen(PS_SOLID,2,RGB(128,128,128));//創(chuàng)建對象
     pen2.CreatePen(PS_SOLID,2,RGB(128,128,0));//創(chuàng)建對象
     CPen* pPenOld=(CPen*)pDC->SelectObject(&pen1);//選擇對象進DC
     drawWithPen1...
     (CPen*)pDC->SelectObject(&pen2);//選擇對象進DC
     drawWithPen2...
     pen1.DeleteObject();//再次創(chuàng)建前先銷毀
     pen1.CreatePen(PS_SOLID,2,RGB(0,0,0));//再次創(chuàng)建對象
     (CPen*)pDC->SelectObject(&pen1);//選擇對象進DC
     drawWithPen1...
     pDC->SelectObject(pOldPen);//恢復
}

  此外系統(tǒng)中還擁有一些庫存GUI對象,你可以利用CDC::SelectStockObject(SelectStockObject( int nIndex )選入這些對象,它們包括一些固定顏色的刷子,畫筆和一些基本字體。

BLACK_BRUSH   Black brush.

DKGRAY_BRUSH   Dark gray brush.

GRAY_BRUSH   Gray brush.

HOLLOW_BRUSH   Hollow brush.

LTGRAY_BRUSH   Light gray brush.

NULL_BRUSH   Null brush.

WHITE_BRUSH   White brush.

BLACK_PEN   Black pen.

NULL_PEN   Null pen.

WHITE_PEN   White pen.

ANSI_FIXED_FONT   ANSI fixed system font.

ANSI_VAR_FONT   ANSI variable system font.

DEVICE_DEFAULT_FONT   Device-dependent font.

OEM_FIXED_FONT   OEM-dependent fixed font.

SYSTEM_FONT   The system font. By default, Windows uses the system font to draw menus, dialog-box controls, and other text. In Windows versions 3.0 and later, the system font is proportional width; earlier versions of Windows use a fixed-width system font.

SYSTEM_FIXED_FONT   The fixed-width system font used in Windows prior to version 3.0. This object is available for compatibility with earlier versions of Windows.

DEFAULT_PALETTE   Default color palette. This palette consists of the 20 static colors in the system palette.
  這些對象留在DC中是安全的,所以你可以利用選入庫存對象來作為恢復DC中GUI對象。

  大家可能都注意到了繪圖時都需要一個DC對象,DC(Device Context設備環(huán)境)對象是一個抽象的作圖環(huán)境,可能是對應屏幕,也可能是對應打印機或其它。這個環(huán)境是設備無關的,所以你在對不同的設備輸出時只需要使用不同的設備環(huán)境就行了,而作圖方式可以完全不變。這也就是Windows耀眼的一點設備無關性。如同你將對一幅畫使用照相機或復印機將會產生不同的輸出,而不需要對畫進行任何調整。DC的使用會穿插在本章中進行介紹。