和GUI有關的各種物件 (轉)

gugu99發表於2007-08-16
和GUI有關的各種物件 (轉)[@more@]和GUI有關的各種 2001-10-03· · ··vchelp

  在中有各種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->(&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 )選入這些物件,它們包括一些固定顏色的刷子,畫筆和一些基本字型。

  • 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裝置環境)物件是一個抽象的作圖環境,可能是對應螢幕,也可能是對應印表機或其它。這個環境是裝置無關的,所以你在對不同的裝置輸出時只需要使用不同的裝置環境就行了,而作圖方式可以完全不變。這也就是Windows耀眼的一點裝置無關性。如同你將對一幅畫使用照相機或影印機將會產生不同的輸出,而不需要對畫進行任何調整。DC的使用會穿插在本章中進行介紹。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-960752/,如需轉載,請註明出處,否則將追究法律責任。

相關文章