與GUI有關(guān)的各種對象
發(fā)表時(shí)間:2024-05-24 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]在Windows中有各種GUI對象(不要和C++對象混淆),當(dāng)你在進(jìn)行繪圖就需要利用這些對象。而各種對象都擁有各種屬性,下面分別講述各種GUI對象和擁有的屬性! ∽煮w對象CFont用于輸出文字時(shí)選用不同風(fēng)格和大小的字體?蛇x擇的風(fēng)格包括:是否為斜體,是否為粗體,字體名稱,是否有下劃線等。顏色和背...
在Windows中有各種GUI對象(不要和C++對象混淆),當(dāng)你在進(jìn)行繪圖就需要利用這些對象。而各種對象都擁有各種屬性,下面分別講述各種GUI對象和擁有的屬性。
字體對象CFont用于輸出文字時(shí)選用不同風(fēng)格和大小的字體。可選擇的風(fēng)格包括:是否為斜體,是否為粗體,字體名稱,是否有下劃線等。顏色和背景色不屬于字體的屬性。關(guān)于如何創(chuàng)建和使用字體在2.2 在窗口中輸出文字中會詳細(xì)講解。
刷子CBrush對象決定填充區(qū)域時(shí)所采用的顏色或模板。對于一個(gè)固定色的刷子來講它的屬性為顏色,是否采用網(wǎng)格和網(wǎng)格的類型如水平的,垂直的,交叉的等。你也可以利用8*8的位圖來創(chuàng)建一個(gè)自定義模板的刷子,在使用這種刷子填充時(shí)系統(tǒng)會利用位圖逐步填充區(qū)域。關(guān)于如何創(chuàng)建和使用刷子在2.3 使用刷子,筆進(jìn)行繪圖中會詳細(xì)講解。
畫筆CPen對象在畫點(diǎn)和畫線時(shí)有用。它的屬性包括顏色,寬度,線的風(fēng)格,如虛線,實(shí)線,點(diǎn)劃線等。關(guān)于如何創(chuàng)建和使用畫筆在2.3 使用刷子,筆進(jìn)行繪圖中會詳細(xì)講解。
位圖CBitmap對象可以包含一幅圖像,可以保存在資源中。關(guān)于如何使用位圖在2.4 在窗口中繪制設(shè)備相關(guān)位圖,圖標(biāo),設(shè)備無關(guān)位圖中會詳細(xì)講解。
還有一種特殊的GUI對象是多邊形,利用多邊形可以很好的限制作圖區(qū)域或是改變窗口外型。關(guān)于如何創(chuàng)建和使用多邊形在2.6 多邊形和剪貼區(qū)域中會詳細(xì)講解。
在Windows中使用GUI對象必須遵守一定的規(guī)則。首先需要?jiǎng)?chuàng)建一個(gè)合法的對象,不同的對象創(chuàng)建方法不同。然后需要將該GUI對象選入DC中,同時(shí)保存DC中原來的GUI對象。如果選入一個(gè)非法的對象將會引起異常。在使用完后應(yīng)該恢復(fù)原來的對象,這一點(diǎn)特別重要,如果保存一個(gè)臨時(shí)對象在DC中,而在臨時(shí)對象被銷毀后可能引起異常。有一點(diǎn)必須注意,每一個(gè)對象在重新創(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);//選擇對象進(jìn)DC
drawWithPen1...
(CPen*)pDC->SelectObject(&pen2);//選擇對象進(jìn)DC
drawWithPen2...
pen1.DeleteObject();//再次創(chuàng)建前先銷毀
pen1.CreatePen(PS_SOLID,2,RGB(0,0,0));//再次創(chuàng)建對象
(CPen*)pDC->SelectObject(&pen1);//選擇對象進(jìn)DC
drawWithPen1...
pDC->SelectObject(pOldPen);//恢復(fù)
}
此外系統(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中是安全的,所以你可以利用選入庫存對象來作為恢復(fù)DC中GUI對象。
大家可能都注意到了繪圖時(shí)都需要一個(gè)DC對象,DC(Device Context設(shè)備環(huán)境)對象是一個(gè)抽象的作圖環(huán)境,可能是對應(yīng)屏幕,也可能是對應(yīng)打印機(jī)或其它。這個(gè)環(huán)境是設(shè)備無關(guān)的,所以你在對不同的設(shè)備輸出時(shí)只需要使用不同的設(shè)備環(huán)境就行了,而作圖方式可以完全不變。這也就是Windows耀眼的一點(diǎn)設(shè)備無關(guān)性。如同你將對一幅畫使用照相機(jī)或復(fù)印機(jī)將會產(chǎn)生不同的輸出,而不需要對畫進(jìn)行任何調(diào)整。DC的使用會穿插在本章中進(jìn)行介紹。