MFC - GDI



Windows 提供了各種繪圖工具供在裝置環境中使用。它提供用於繪製線條的筆、用於填充內部的畫刷以及用於繪製文字的字型。MFC 提供了等效於 Windows 中繪圖工具的圖形物件類。

繪圖

裝置環境是 Windows 資料結構,其中包含有關裝置(如顯示器或印表機)的繪圖屬性的資訊。所有繪圖呼叫都是透過裝置環境物件進行的,該物件封裝了 Windows 用於繪製線條、形狀和文字的 API。

裝置環境允許在 Windows 中進行裝置無關繪圖。裝置環境可用於繪製到螢幕、印表機或圖元檔案。

CDC 是在 MFC 中進行繪圖的最基本類。CDC 物件提供成員函式來執行基本的繪圖步驟,以及用於處理與視窗客戶區關聯的顯示環境的成員。

序號 名稱及描述
1

AbortDoc

終止當前列印作業,擦除應用程式自上次呼叫 StartDoc 成員函式以來寫入裝置的所有內容。

2

AbortPath

關閉並丟棄裝置環境中的任何路徑。

3

AddMetaFileComment

將註釋從緩衝區複製到指定的增強格式圖元檔案。

4

AlphaBlend

顯示具有透明或半透明畫素的點陣圖。

5

AngleArc

繪製一條線段和一條弧線,並將當前位置移動到弧線的結束點。

6

Arc

繪製橢圓弧。

7

ArcTo

繪製橢圓弧。此函式類似於 Arc,但會更新當前位置。

8

Attach

將 Windows 裝置環境附加到此 CDC 物件。

9

BeginPath

在裝置環境中開啟路徑括號。

10

BitBlt

從指定的裝置環境複製點陣圖。

11

Chord

繪製弦(由橢圓和線段的交點界定的封閉圖形)。

12

CloseFigure

關閉路徑中的開放圖形。

13

CreateCompatibleDC

建立一個與另一個裝置環境相容的記憶體裝置環境。您可以使用它來準備記憶體中的影像。

14

CreateDC

為特定裝置建立裝置環境。

15

CreateIC

為特定裝置建立資訊環境。這提供了一種快速獲取有關裝置資訊而不建立裝置環境的方法。

16

DeleteDC

刪除與此 CDC 物件關聯的 Windows 裝置環境。

17

DeleteTempMap

CWinApp 空閒時間處理程式呼叫,以刪除由 FromHandle 建立的任何臨時 CDC 物件。還分離裝置環境。

18

Detach

將 Windows 裝置環境從此 CDC 物件分離。

19

DPtoHIMETRIC

將裝置單位轉換為 HIMETRIC 單位。

20

DPtoLP

將裝置單位轉換為邏輯單位。

21

Draw3dRect

繪製一個三維矩形。

22

DrawDragRect

在矩形被拖動時擦除並重繪它。

23

DrawEdge

繪製矩形的邊緣。

24

DrawEscape

訪問影片顯示的繪圖功能,這些功能無法透過圖形裝置介面 (GDI) 直接獲得。

25

DrawFocusRect

以用於指示焦點的樣式繪製矩形。

26

DrawFrameControl

繪製框架控制元件。

27

DrawIcon

繪製圖標。

28

DrawState

顯示影像並應用視覺效果以指示狀態。

29

DrawText

在指定的矩形中繪製格式化文字。

30

DrawTextEx

使用其他格式在指定的矩形中繪製格式化文字。

31

Ellipse

繪製橢圓。

32

EndDoc

結束由 StartDoc 成員函式啟動的列印作業。

33

EndPage

通知裝置驅動程式頁面即將結束。

34

EndPath

關閉路徑括號並將括號定義的路徑選入裝置環境。

35

EnumObjects

列舉裝置環境中可用的筆和畫刷。

36

Escape

允許應用程式訪問特定裝置無法透過 GDI 直接獲得的功能。還允許訪問 Windows 轉義函式。應用程式發出的轉義呼叫將被翻譯併發送到裝置驅動程式。

37

ExcludeClipRect

建立一個新的剪輯區域,該區域由現有剪輯區域減去指定的矩形組成。

38

ExcludeUpdateRgn

透過從視窗的剪輯區域中排除更新區域來阻止在視窗的無效區域內繪製。

39

ExtFloodFill

使用當前畫刷填充區域。提供比 FloodFill 成員函式更多的靈活性。

40

ExtTextOut

使用當前選定的字型在矩形區域內寫入字元字串。

41

FillPath

關閉當前路徑中的任何開放圖形,並使用當前畫刷和多邊形填充模式填充路徑的內部。

42

FillRect

使用特定畫刷填充給定矩形。

43

FillRgn

使用指定的畫刷填充特定區域。

44

FillSolidRect

用純色填充矩形。

45

FlattenPath

將路徑中選定的任何曲線轉換為當前裝置環境,並將每個曲線轉換為一系列線。

46

FloodFill

用當前畫刷填充區域。

47

FrameRect

在矩形周圍繪製邊框。

48

FrameRgn

使用畫刷在特定區域周圍繪製邊框。

49

FromHandle

在給定裝置環境控制代碼時返回指向 CDC 物件的指標。如果 CDC 物件未附加到控制代碼,則會建立一個臨時 CDC 物件並將其附加。

50

GetArcDirection

返回裝置環境的當前弧方向。

51

GetAspectRatioFilter

檢索當前縱橫比過濾器的設定。

52

GetBkColor

檢索當前背景顏色。

53

GetBkMode

檢索背景模式。

54

GetBoundsRect

返回指定裝置環境的當前累積邊界矩形。

55

GetBrushOrg

檢索當前畫刷的原點。

56

GetCharABCWidths

檢索給定範圍內連續字元的寬度(以邏輯單位為單位),這些字元來自當前字型。

57

GetCharABCWidthsI

檢索給定範圍內連續字形索引的寬度(以邏輯單位為單位),這些字形索引來自當前 TrueType 字型。

58

GetCharacterPlacement

檢索有關字元字串的各種型別的資訊。

59

GetCharWidth

檢索給定範圍內連續字元的分數寬度,這些字元來自當前字型。

60

GetCharWidthI

檢索給定範圍內連續字形索引的寬度(以邏輯座標為單位),這些字形索引來自當前字型。

61

GetClipBox

檢索當前剪輯邊界的緊密邊界矩形的尺寸。

62

GetColorAdjustment

檢索裝置環境的顏色調整值。

63

GetCurrentBitmap

返回指向當前選定的 CBitmap 物件的指標。

64

GetCurrentBrush

返回指向當前選定的 CBrush 物件的指標。

65

GetCurrentFont

返回指向當前選定的 CFont 物件的指標。

66

GetCurrentPalette

返回指向當前選定的 CPalette 物件的指標。

48

GetCurrentPen

返回指向當前選定的 CPen 物件的指標。

67

GetCurrentPosition

檢索筆的當前位置(以邏輯座標為單位)。

68

GetDCBrushColor

檢索當前畫刷顏色。

69

GetDCPenColor

檢索當前筆顏色。

70

GetDeviceCaps

檢索有關給定顯示裝置的功能的指定型別的裝置特定資訊。

71

GetFontData

從可縮放字型檔案檢索字型度量資訊。要檢索的資訊透過指定字型檔案中的偏移量和要返回的資訊長度來識別。

72

GetFontLanguageInfo

返回有關指定顯示環境的當前選定字型的資訊。

73

GetGlyphOutline

檢索當前字型中輪廓字元的輪廓曲線或點陣圖。

74

GetGraphicsMode

檢索指定裝置環境的當前圖形模式。

75

GetHalftoneBrush

檢索半色調畫刷。

76

GetKerningPairs

檢索指定裝置環境中當前選定的字型的字元間距對。

77

GetLayout

檢索裝置環境 (DC) 的佈局。佈局可以是左到右(預設)或右到左(映象)。

78

GetMapMode

檢索當前對映模式。

79

GetMiterLimit

返回裝置環境的斜接限制。

80

GetNearestColor

檢索給定裝置可以表示的與指定邏輯顏色最接近的邏輯顏色。

81

GetOutlineTextMetrics

檢索 TrueType 字型的字型度量資訊。

82

GetOutputCharWidth

使用輸出裝置上下文從當前字型中檢索連續字元組中各個字元的寬度。

83

GetOutputTabbedTextExtent

計算輸出裝置上下文上字元字串的寬度和高度。

84

GetOutputTextExtent

使用當前字型計算輸出裝置上下文上文字行的寬度和高度,以確定尺寸。

85

GetOutputTextMetrics

從輸出裝置上下文中檢索當前字型的度量。

86

GetPath

檢索定義選中到裝置上下文中的路徑中找到的線條端點和曲線控制點的座標。

87

GetPixel

檢索指定點處的畫素的 RGB 顏色值。

88

GetPolyFillMode

檢索當前的多邊形填充模式。

89

GetROP2

檢索當前的繪圖模式。

90

GetSafeHdc

返回m_hDC,即輸出裝置上下文。

91

GetStretchBltMode

檢索當前的點陣圖拉伸模式。

92

GetTabbedTextExtent

計算屬性裝置上下文上字元字串的寬度和高度。

93

GetTextAlign

檢索文字對齊標誌。

94

GetTextCharacterExtra

檢索字元間距量的當前設定。

95

GetTextColor

檢索當前的文字顏色。

96

GetTextExtent

使用當前字型計算屬性裝置上下文上文字行的寬度和高度,以確定尺寸。

97

GetTextExtentExPointI

檢索指定字串中將在指定空間內適合的字元數,並填充一個數組,其中包含每個字元的文字範圍。

98

GetTextExtentPointI

檢索指定字形索引陣列的寬度和高度。

99

GetTextFace

將當前字型的字型名稱複製到緩衝區中,作為以 null 結尾的字串。

100

GetTextMetrics

從屬性裝置上下文中檢索當前字型的度量。

101

GetViewportExt

檢索視口的 x 和 y 範圍。

102

GetViewportOrg

檢索視口原點的 x 和 y 座標。

103

GetWindow

返回與顯示裝置上下文關聯的視窗。

104

GetWindowExt

檢索關聯視窗的 x 和 y 範圍。

105

GetWindowOrg

檢索關聯視窗原點的 x 和 y 座標。

106

GetWorldTransform

檢索當前的世界空間到頁面空間的轉換。

107

GradientFill

使用漸變顏色填充矩形和三角形結構。

108

GrayString

在給定位置繪製暗淡(灰色)文字。

109

HIMETRICtoDP

將 HIMETRIC 單位轉換為裝置單位。

110

HIMETRICtoLP

將 HIMETRIC 單位轉換為邏輯單位。

111

IntersectClipRect

透過形成當前區域和矩形的交集來建立一個新的剪裁區域。

112

InvertRect

反轉矩形的內容。

113

InvertRgn

反轉區域中的顏色。

114

IsPrinting

確定裝置上下文是否用於列印。

115

LineTo

從當前位置繪製一條線到某個點,但不包括該點。

116

LPtoDP

將邏輯單位轉換為裝置單位。

117

LPtoHIMETRIC

將邏輯單位轉換為 HIMETRIC 單位。

118

MaskBlt

使用給定的掩碼和光柵運算組合源和目標點陣圖的顏色資料。

119

ModifyWorldTransform

使用指定的模式更改裝置上下文的全域性轉換。

120

MoveTo

移動當前位置。

121

OffsetClipRgn

移動給定裝置的剪裁區域。

122

OffsetViewportOrg

相對於當前視口原點的座標修改視口原點。

123

OffsetWindowOrg

相對於當前視窗原點的座標修改視窗原點。

124

PaintRgn

使用選定的畫刷填充區域。

125

PatBlt

建立位模式。

126

Pie

繪製一個扇形。

127

PlayMetaFile

在給定裝置上播放指定元檔案的內容。PlayMetaFile 的增強版本顯示儲存在給定增強格式元檔案中的圖片。元檔案可以播放任意次數。

128

PlgBlt

執行源裝置上下文中的指定矩形中的顏色資料位到給定裝置上下文中的指定平行四邊形的位塊傳輸。

129

PolyBezier

繪製一個或多個貝塞爾曲線。當前位置既不使用也不更新。

130

PolyBezierTo

繪製一個或多個貝塞爾曲線,並將當前位置移動到最後一個貝塞爾曲線的結束點。

131

PolyDraw

繪製一組線段和貝塞爾曲線。此函式更新當前位置。

132

Polygon

繪製一個由兩點或更多點(頂點)組成的多邊形,這些點由線連線。

133

Polyline

繪製一組連線指定點的線段。

134

PolylineTo

繪製一條或多條直線,並將當前位置移動到最後一條線的結束點。

135

PolyPolygon

建立兩個或多個多邊形,這些多邊形使用當前的多邊形填充模式填充。多邊形可以是不相交的,也可以是重疊的。

136

PolyPolyline

繪製多個系列的連線線段。此函式既不使用也不更新當前位置。

137

PtVisible

指定給定點是否在剪裁區域內。

138

RealizePalette

將當前邏輯調色盤中的調色盤條目對映到系統調色盤。

139

Rectangle

使用當前筆繪製矩形,並使用當前畫刷填充它。

140

RectVisible

確定給定矩形的任何部分是否位於剪裁區域內。

141

ReleaseAttribDC

釋放m_hAttribDC,即屬性裝置上下文。

142

ReleaseOutputDC

釋放m_hDC,即輸出裝置上下文。

143

ResetDC

更新 m_hAttribDC 裝置上下文。

144

RestoreDC

將裝置上下文恢復到以前使用SaveDC儲存的狀態。

145

RoundRect

使用當前筆繪製一個圓角矩形,並使用當前畫刷填充它。

146

SaveDC

儲存裝置上下文的當前狀態。

147

ScaleViewportExt

相對於當前值修改視口範圍。

148

ScaleWindowExt

相對於當前值修改視窗範圍。

149

ScrollDC

水平和垂直滾動位矩形。

150

SelectClipPath

選擇當前路徑作為裝置上下文的剪裁區域,使用指定的模式將新區域與任何現有剪裁區域組合。

151

SelectClipRgn

使用指定的模式將給定區域與當前剪裁區域組合。

152

SelectObject

選擇 GDI 繪圖物件(如筆)。

153

SelectPalette

選擇邏輯調色盤。

154

SelectStockObject

選擇 Windows 提供的預定義庫存筆、畫刷或字型之一。

155

SetAbortProc

設定程式設計師提供的回撥函式,如果必須中止列印作業,Windows 將呼叫該函式。

156

SetArcDirection

設定用於圓弧和矩形函式的繪圖方向。

157

SetAttribDC

設定 m_hAttribDC,即屬性裝置上下文。

158

SetBkColor

設定當前背景顏色。

159

SetBkMode

設定背景模式。

160

SetBoundsRect

控制指定裝置上下文的邊界矩形資訊的累積。

161

SetBrushOrg

指定將選入裝置上下文的下一個畫刷的原點。

162

SetColorAdjustment

使用指定的值設定裝置上下文的顏色調整值。

163

SetDCBrushColor

設定當前畫刷顏色。

164

SetDCPenColor

設定當前筆顏色。

165

SetGraphicsMode

設定指定裝置上下文的當前圖形模式。

166

SetLayout

更改裝置上下文 (DC) 的佈局。

167

SetMapMode

設定當前對映模式。

168

SetMapperFlags

更改字型對映器在將邏輯字型對映到物理字型時使用的演算法。

169

SetMiterLimit

設定裝置上下文斜接連線長度的限制。

170

SetOutputDC

設定 m_hDC,即輸出裝置上下文。

171

SetPixel

將指定點處的畫素設定為指定顏色的最接近近似值。

172

SetPixelV

將指定座標處的畫素設定為指定顏色的最接近近似值。SetPixelVSetPixel 快,因為它不需要返回實際繪製的點的顏色值。

173

SetPolyFillMode

設定多邊形填充模式。

175

SetROP2

設定當前繪圖模式。

176

SetStretchBltMode

設定點陣圖拉伸模式。

177

SetTextAlign

設定文字對齊標誌。

178

SetTextCharacterExtra

設定字元間距量。

179

SetTextColor

設定文字顏色。

180

SetTextJustification

在字串中的換行符中新增空格。

181

SetViewportExt

設定視口的 x 和 y 範圍。

182

SetViewportOrg

設定視口原點。

183

SetWindowExt

設定關聯視窗的 x 和 y 範圍。

184

SetWindowOrg

設定裝置上下文的視窗原點。

185

SetWorldTransform

設定當前的世界空間到頁面空間的轉換。

186

StartDoc

通知裝置驅動程式新的列印作業已開始。

187

StartPage

通知裝置驅動程式新的頁面已開始。

188

StretchBlt

將點陣圖從源矩形和裝置移動到目標矩形,如果需要,則拉伸或壓縮點陣圖以適合目標矩形的尺寸。

189

StrokeAndFillPath

關閉路徑中任何開啟的圖形,使用當前筆描繪路徑輪廓,並使用當前畫刷填充其內部。

190

StrokePath

使用當前筆呈現指定的路徑。

191

TabbedTextOut

在指定位置寫入字元字串,將製表符擴充套件到製表位位置陣列中指定的值。

192

TextOut

使用當前選定的字型在指定位置寫入字元字串。

193

TransparentBlt

將顏色資料位塊從指定的源裝置上下文傳輸到目標裝置上下文,在傳輸中渲染指定的顏色透明。

194

UpdateColors

透過逐畫素地將客戶端區域中的當前顏色與系統調色盤匹配,更新裝置上下文的客戶端區域。

195

WidenPath

將當前路徑重新定義為如果使用當前選定到裝置上下文中的筆描繪路徑將繪製的區域。

線條

步驟 1 - 讓我們透過建立一個名為MFCGDIDemo的新基於 MFC 的單文件專案來了解一個簡單的示例。

Lines

步驟 2 - 專案建立完成後,轉到解決方案資源管理器,雙擊“原始檔”資料夾下的MFCGDIDemoView.cpp檔案。

步驟 3 - 在CMFCGDIDemoView::OnDraw()方法中繪製如下所示的線條。

void CMFCGDIDemoView::OnDraw(CDC* pDC) {
   pDC->MoveTo(95, 125);
   pDC->LineTo(230, 125);
   CMFCGDIDemoDoc* pDoc = GetDocument();
   ASSERT_VALID(pDoc);
   if (!pDoc)
      return;

   // TODO: add draw code for native data here
}

步驟 4 - 執行此應用程式。您將看到以下輸出。

Lines

步驟 5 - CDC::MoveTo()方法用於設定線條的起始位置。

使用 LineTo() 時,程式從 MoveTo() 點開始到 LineTo() 結束。

在 LineTo() 之後,如果您不呼叫 MoveTo(),並再次使用其他點值呼叫 LineTo(),則程式將從上一個 LineTo() 繪製一條線到新的 LineTo() 點。

步驟 6 - 要繪製不同的線條,您可以使用以下程式碼所示的此屬性。

void CMFCGDIDemoView::OnDraw(CDC* pDC) { 
   pDC->MoveTo(95, 125);
   pDC->LineTo(230, 125);
   pDC->LineTo(230, 225);
   pDC->LineTo(95, 325);
   CMFCGDIDemoDoc* pDoc = GetDocument();
   ASSERT_VALID(pDoc);
   if (!pDoc)
      return;

   // TODO: add draw code for native data here 
}

步驟 7 - 執行此應用程式。您將看到以下輸出。

Lines

折線

折線是一系列連線的線。這些線儲存在 POINT 或 CPoint 值的陣列中。要繪製折線,您可以使用 CDC::Polyline() 方法。要繪製折線,至少需要兩個點。如果定義了兩個以上的點,則第一條線之後的每條線都將從前一點繪製到下一條點,直到所有點都包含在內。

步驟 1 - 讓我們來看一個簡單的例子。

void CMFCGDIDemoView::OnDraw(CDC* pDC) {
   CPoint Pt[7];
   Pt[0] = CPoint(20, 150);
   Pt[1] = CPoint(180, 150);
   Pt[2] = CPoint(180, 20);
   pDC−Polyline(Pt, 3);
   
   CMFCGDIDemoDoc* pDoc = GetDocument();
   ASSERT_VALID(pDoc);
   if (!pDoc)
      return;

   // TODO: add draw code for native data here
}

步驟 2 - 執行此應用程式時,您將看到以下輸出。

Polylines

矩形

矩形是由四個構成四個直角的邊組成的幾何圖形。與線條一樣,要繪製矩形,必須定義其起始位置和結束位置。要繪製矩形,可以使用 CDC::Rectangle() 方法。

步驟 1 - 讓我們來看一個簡單的例子。

void CMFCGDIDemoView::OnDraw(CDC* pDC) {
   pDC->Rectangle(15, 15, 250, 160);
   
   CMFCGDIDemoDoc* pDoc = GetDocument();
   ASSERT_VALID(pDoc);
   if (!pDoc)
      return;

   // TODO: add draw code for native data here
}

步驟 2 - 執行此應用程式時,您將看到以下輸出。

Rectangles

正方形

正方形是由四個構成四個直角的邊組成的幾何圖形,但每條邊的長度必須相等。

讓我們來看一個簡單的例子。

void CMFCGDIDemoView::OnDraw(CDC* pDC) {
   pDC->Rectangle(15, 15, 250, 250);
   
   CMFCGDIDemoDoc* pDoc = GetDocument();
   ASSERT_VALID(pDoc);
   if (!pDoc)
      return;

   // TODO: add draw code for native data here
}

執行此應用程式時,您將看到以下輸出。

Squares

扇形

扇形是由橢圓的一小部分和從橢圓中心延伸到每一側的兩條線限定的。要繪製扇形,可以使用 CDC::Pie() 方法,如下所示 -

BOOL Pie(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);

  • (x1, y1) 點確定表示扇形的橢圓所在的矩形左上角。 (x2, y2) 點是矩形的右下角。

Pies
  • (x3, y3) 點以預設的逆時針方向指定扇形的起始角。

  • (x4, y4) 點指定扇形的終點。

讓我們來看一個簡單的例子。

void CMFCGDIDemoView::OnDraw(CDC* pDC) {
   pDC->Pie(40, 20, 226, 144, 155, 32, 202, 115);
   
   CMFCGDIDemoDoc* pDoc = GetDocument();
   ASSERT_VALID(pDoc);
   if (!pDoc)
      return;

   // TODO: add draw code for native data here
}

步驟 2 - 執行此應用程式時,您將看到以下輸出。

Pies

弧線

弧線是橢圓的一部分或一段,這意味著弧線是不完整的橢圓。要繪製弧線,可以使用 CDC::Arc() 方法。

BOOL Arc(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);

Arcs

CDC 類配備了 SetArcDirection() 方法。

以下是語法 -

int SetArcDirection(int nArcDirection)

序號 值和方向
1

AD_CLOCKWISE

圖形按順時針方向繪製

2

AD_COUNTERCLOCKWISE

圖形按逆時針方向繪製

步驟 1 - 讓我們來看一個簡單的例子。

void CMFCGDIDemoView::OnDraw(CDC* pDC) {
   pDC->SetArcDirection(AD_COUNTERCLOCKWISE);
   pDC->Arc(20, 20, 226, 144, 202, 115, 105, 32);
   
   CMFCGDIDemoDoc* pDoc = GetDocument();
   ASSERT_VALID(pDoc);
   if (!pDoc)
      return;

   // TODO: add draw code for native data here
}

步驟 2 - 執行此應用程式時,您將看到以下輸出。

Arcs

到目前為止,我們繪製的弧線被認為是開放圖形,因為它們是由一條具有起點和終點的線組成的(不像圓形或矩形那樣)。是一條兩端由直線連線的弧線。

Chords

要繪製弦,可以使用 CDC::Chord() 方法。

BOOL Chord(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);

讓我們來看一個簡單的例子。

void CMFCGDIDemoView::OnDraw(CDC* pDC) {
   pDC->SetArcDirection(AD_CLOCKWISE);
   pDC->Chord(20, 20, 226, 144, 202, 115, 105, 32);
   
   CMFCGDIDemoDoc* pDoc = GetDocument();
   ASSERT_VALID(pDoc);
   if (!pDoc)
      return;

   // TODO: add draw code for native data here
}

執行上述應用程式時,您將看到以下輸出。

Chords

此示例中的弧線方向設定為順時針方向。

顏色

顏色是增強物件美觀外觀的最基本物件之一。顏色是非空間物件,新增到物件以修改其某些視覺方面。MFC 庫結合 Win32 API 提供了各種操作,您可以使用這些操作來利用顏色的各個方面。

RGB 宏的行為類似於函式,允許您傳遞三個用逗號分隔的數值。每個值必須介於 0 和 255 之間,如下面的程式碼所示。

void CMFCGDIDemoView::OnDraw(CDC* pDC) {
   COLORREF color = RGB(239, 15, 225);
}

讓我們來看一個簡單的例子。

void CMFCGDIDemoView::OnDraw(CDC* pDC) {
   COLORREF color = RGB(239, 15, 225);
   pDC->SetTextColor(color);
   pDC->TextOut(100, 80, L"MFC GDI Tutorial", 16);
   
   CMFCGDIDemoDoc* pDoc = GetDocument();
   ASSERT_VALID(pDoc);
   if (!pDoc)
      return;

   // TODO: add draw code for native data here
}

執行此應用程式時,您將看到以下輸出。

Colors

字型

CFont封裝了 Windows 圖形裝置介面 (GDI) 字型,並提供用於操作字型的成員函式。要使用 CFont 物件,請構造一個 CFont 物件並將 Windows 字型附加到它,然後使用該物件的成員函式來操作字型。

讓我們來看一個簡單的例子。

void CMFCGDIDemoView::OnDraw(CDC* pDC) {
   CFont font;
   font.CreatePointFont(920, L"Garamond");
   CFont *pFont = pDC->SelectObject(&font);
   COLORREF color = RGB(239, 15, 225);
   pDC->SetTextColor(color);
   pDC->TextOut(100, 80, L"MFC GDI Tutorial", 16);
   pDC->SelectObject(pFont);
   font.DeleteObject();
   
   CMFCGDIDemoDoc* pDoc = GetDocument();
   ASSERT_VALID(pDoc);
   if (!pDoc)
   return;

   // TODO: add draw code for native data here
}

執行上述應用程式時,您將看到以下輸出。

Fonts

畫筆

畫筆是用於在裝置上下文中繪製線條和曲線的工具。在圖形程式設計中,畫筆也用於繪製幾何閉合形狀(如矩形或多邊形)的邊界。Microsoft Windows 考慮兩種型別的畫筆 - 裝飾幾何

當畫筆只能繪製固定寬度(小於或等於 1 畫素)的簡單線條時,稱為裝飾畫筆。當畫筆可以採用不同的寬度和各種端點時,稱為幾何畫筆。MFC 提供了一個類CPen,它封裝了 Windows 圖形裝置介面 (GDI) 畫筆。

讓我們來看一個簡單的例子。

void CMFCGDIDemoView::OnDraw(CDC* pDC) {
   CPen pen;
   pen.CreatePen(PS_DASHDOTDOT, 1, RGB(160, 75, 90));
   pDC->SelectObject(&pen);
   pDC->Rectangle(25, 35, 250, 125);
   
   CMFCGDIDemoDoc* pDoc = GetDocument();
   ASSERT_VALID(pDoc);
   if (!pDoc)
      return;

   // TODO: add draw code for native data here
}

執行上述應用程式時,您將看到以下輸出。

Pens

畫刷

畫刷是一種繪圖工具,用於填充閉合形狀或線條的內部。畫刷的行為就像拿起一桶油漆並將其倒在某個地方。MFC 提供了一個類CBrush,它封裝了 Windows 圖形裝置介面 (GDI) 畫刷。

讓我們來看一個簡單的例子。

void CMFCGDIDemoView::OnDraw(CDC* pDC) {
   CBrush brush(RGB(100, 150, 200));
   CBrush *pBrush = pDC->SelectObject(&brush);
   pDC->Rectangle(25, 35, 250, 125);
   pDC->SelectObject(pBrush);
   
   CMFCGDIDemoDoc* pDoc = GetDocument();
   ASSERT_VALID(pDoc);
   if (!pDoc)
      return;

   // TODO: add draw code for native data here
}

執行此應用程式時,您將看到以下輸出。

Brushes
廣告
© . All rights reserved.