簡介
CDC類中,常用的一些成員函數。
CDC類定義的是設備上下文對象的類。
CDC對象提供處理顯示器或打印機等設備上下文的成員函數,以及處理與窗口客戶區對應的顯示上下文的成員。
通過CDC對象的成員函數進行所有的繪圖。
類對設備上下文操作提供了成員函數,處理繪圖工具。安全型圖形設備接口(GDI)對象收集,以及處理顔色和調色闆。
它還為獲取和設置繪圖屬性、映射,處理視點、窗口擴展、轉換坐标,處理區域、剪貼、繪制直線及繪制簡單橢圓和多邊形等形狀提供了成員函數。
另外還為繪制文本、處理字體,使用打印機跳轉,滾動和播放元文件提供成員函數。
使用CDC對象時要構造它,然後調用與它平等的、使用設備上下文的Windows函數的成員函數。
在Java中,也有成員函數這一名詞,表示在某一個類中該類的函數(Java中也稱方法),其實現某一功能。
注意事項
Windows95下所有屏幕坐标限制在16位以内。因此向CDC成員函數傳遞的int必須在-32768至32767之間。
為了特定用途,Microsoft基本類庫提供了幾個CDC派生類。CPaintDC包括BeginPaint和EndPaint調用。
CClientDC管理窗口用戶區對應的顯示上下文。
CWindowDC管理與整個窗口對應的顯示上下文,包括它的結構和控件。
CMetaFileDC與帶元文件的設備上下文對應。
CDC包含m_hDC和m_hAttribDC兩個設備上下文,它們在CDC對象創建時參考同一個設備。
CDC指導所有對m_hDC的輸出GDI調用以及對m_hAttribDC的大部分屬性GDI調用(GetTextColor是屬性調用的例子,而SetTextColor是一個輸出調用)。
例如框架使用這兩個設備上下文實現CMetaFileDC對象,在從物理設備讀取屬性期間向元文件發送輸出。
打印預覽以相同風格在框架中實現。還可以以相似方法在特殊應用代碼中使用這兩個設備上下文。
可能多次需要來自m_hDC和m_hAttribDC設備上下文的文本度量信息。
以下幾對函數提供了這項功能:
使用m_hAttribDC使用m_hDC。
GetTextExtentGetOutputTextExtent。
GetTabbedTextExtentGetOutputTabbedTextExtent。
GetTextMetricsGetOutputTextMetrics。
GetCharWidthGetOutputCharWidth。
CDC類成員
對VC++編程中如何訪問MFC框架下各類的成員函數進行詳細介紹,包括基于Doc/View architecture和Dialog based結構。
數據成員m_hDCCDC對象使用的輸出設備上下文。
m_hAttribDCCDC對象使用的輸出屬性上下文。
構造函數CDC構造一個CDC對象。
初始化CreateDC為指定設備創建設備上下文。
CreateIC為指定設備創建信息上下文。這提供了一種不創建設備上下文即獲取有關設備信息的快速方式。
CreateCompatibleDC創建内存設備上下文,與另一個設備上下文匹配。可以用它在内存中準備圖像。
DeleteDC删除CDC對象對應的Windows設備上下文。
FromHandle給定設備上下文句柄時,返回指向CDC對象的指針。如果CDC對象未附加到句柄,則創建并附加一個臨時CDC對象。
DeleteTempMap由CWinApp空閑時間句柄調用,删除FromHandle創建的臨時CDC對象。同時分離設備上下文。
Attach把Windows設備上下文附加到這個CDC對象。
Detach從CDC對象分離Windows設備上下文。
SetAttribDC設置屬性設備上下文m_hAttribDC。
SetOutputDC設置輸出設備上下文m_hDC。
ReleaseAttribDC釋放屬性設備上下文m_hAttribDC。
ReleaseOutputDC釋放輸出設備上下文m_hDC。
GetCurrentBitmap返回指向當前選擇的CBitmap對象的指針。
GetCurrentBrush返回指向當前選擇的CBrush對象的指針。
GetCurrentFont返回指向當前選擇的CFont對象的指針。
GetCurrentPalette返回指向當前選擇的CPalette對象的指針。
GetCurrentPen返回指向當前選擇的CPen對象的指針。
GetWindow返回顯示設備上下文對應的窗口。
設備上下文函數GetSafeHdc返回輸出設備上下文m_hDC。
SaveDC保存設備上下文當前狀态。
RestoreDC恢複SaveDC保存的設備上下文以前狀态。
ResetDC更新m_hAttribDC設備上下文。
GetDeviceCaps獲取有關給定顯示設備功能的指定類型指定設備信息。
IsPrinting确定正在使用的設備上下文是否用于打印。
安全型選擇幫助器GetBrushOrg獲取當前畫刷的起點。
SetBrushOrg指定選入設備上下文的下一個畫刷的起點。
EnumObjects枚舉設備上下文中有效的筆和畫刷。
顔色和顔色調色闆函數SelectObject選擇筆等GDI繪圖對象。
SelectStockObject選擇Windows提供的預定義的一個筆、畫刷或字體。
繪圖工具函數GetNearestColor獲取與給定設備能顯示的指定邏輯顔色最接近的邏輯色。
SelectPalette選擇邏輯調色闆。
RealizePalette把當前邏輯調色闆中的調色闆入口映射到系統調色闆。
UpdateColors通過客戶區當前顔色在像素基礎上與系統調色闆的匹配,更新設備上下文的客戶區。
GetHalftoneBrush獲取半色調畫刷。
繪圖屬性函數GetBkColor獲取當前背景色。
SetBkColor設置當前背景色。
GetBkMode獲取背景模式。
SetBkMode設置背景模式。
GetPolyFillMode獲取當前多邊形填充模式。
SetPolyFillMode設置多邊形填充模式。
GetROP2獲取當前繪圖模式。
SetROP2設置當前繪圖模式。
GetStretchBltMode獲取當前位圖拉伸模式。
SetStretchBltMode設置位圖拉伸模式。
GetTextColor獲取當前文本顔色。
SetTextColor設置文本顔色。
GetColorAdjustment獲取用于設備上下文的顔色調整值。
SetColorAdjustment使用指定值設置設備上下文的顔色調整值。
映射函數GetMapMode獲取當前映射模式。
SetMapMode設置當前映射模式。
GetViewportOrg獲取視區起點的X和Y坐标。
SetViewportOrg設置視區起點。
OffsetViewportOrg相對于當前視區起點坐标修改視區起點。
GetViewportExt獲取視區X和Y範圍。
SetViewportExt設置視區X和Y範圍。
ScaleViewportExt相對于當前值修改視區範圍。
GetWindowOrg獲取參應窗口起點的X和Y坐标。
SetWindowOrg設置設備上下文的窗口起點。
OffsetWindowOrg相對于當前窗口起點的坐标修改窗口起點。
GetWindowExt獲取對應窗口的X和Y坐标。
SetWindowExt設置對應窗口的X和Y坐标。
ScaleWindowExt相對于當前值修改窗口範圍。
坐标函數DPtoHIMETRIC設備單位轉換為HIMETRIC單位。
LPtoHIMETRIC邏輯單位轉換為HIMETRIC單位。
DPtoLP設備單位轉換為邏輯單位。
LPtoDP邏輯單位轉換為設備單位。
HIMETRICtoDPHIMETRIC單位轉換為設備單位。
HIMETRICtoLPHIMETRIC單位轉換為邏輯單位。
區域函數FillRgn用指定畫刷填充指定區域。
FrameRgn用畫刷在指定區域周圍繪制邊線。
InvertRgn反轉區域中的顔色。
PaintRgn用選取的畫刷填充區域。
剪切函數SetBoundsRect控制指定設備上下文綁定的矩形信息的累計。
GetBoundsRect返回到設備上下文當前累計的綁定矩形。
GetClipBox獲取當前剪切邊界周圍最緊綁定矩形的維數。
SelectClipRgn使用指定模式合并給定區域和當前剪切區域。
ExcludeClipRect創建包含現有剪切區域減掉指定矩形的一個新剪切區域。
ExcludeUpdateRgn通過從剪切區域排除窗口中的更新區域,防止在窗口的無效區域中繪圖。
IntersectClipRect通過構成當前區域和矩形的交集創建一個新的剪切區域。
OffsetClipRgn移動給定設備的剪切區域。
PtVisible确定給定點是否在剪切區域内。
RectVisible确定給定矩形的任何部分是否在剪切區域内。
線輸出函數GetCurrentPosition獲取筆的當前位置(以邏輯坐标表示)。
MoveTo移動當前位置。
LineTo從當前位置到一點畫直線,但不包括那個點。
Arc畫一段橢圓弧。
ArcTo畫一段橢圓弧。除了更新當前位置以外,這個函數與Arc類似。
AngleArc畫一條線段和圓弧,把當前位置移到圓弧終點。
GetArcDirection對設備上下文返回當前圓弧方向。
SetArcDirection設備圓弧和矩形函數要用到的繪圖方向。
PolyDraw畫一組線段和Bezier樣條。這個函數更新當前位置Polyline畫一組與指定點連接的線段。
PolyPolyline畫多組相連線段。這個函數不使用也不更新當前位置。
PolylineTo畫一條或多條直線,并把當前位置移到最後一條直線的終點。
PolyBezier畫一條或多條Bezier樣條。不使用也不更新當前位置。
PolyBezierTo畫一條或多條Bezier樣條,并把當前位置移到最後一條Bezier樣條的終點。
簡單繪圖函數FillRect用指定畫刷填充給定矩形。
FrameRect在矩形周圍繪制邊界。
InvertRect反轉矩形内容。
DrawIcon繪制圖标。
DrawDragRect拖拽矩形時擦除并重繪它。
FillSolidRect用實顔色填充矩形。
Draw3Drect繪制三維矩形。
DrawEdge繪制矩形邊。
DrawFrameControl繪制幀控件。
DrawState顯示圖像并應用可視化效果來表示一個狀态。
橢圓和多邊形函數Chord繪制橢圓弧(橢圓和一條線段相交圍成的閉合圖形)。
DrawFocusRect繪制用于表示焦點的風格的矩形。
Ellipse繪制橢圓。
Pie繪制餅形圖。
Polygon繪制多邊形,包含由線段連接的一個或多個點(頂點)。
PolyPolygon創建使用當前多邊形填充模式的兩個或多個多邊形,多邊形可以相互分開或疊加。
Polyline繪制多邊形,包含連接指定點的一組線段。
Rectangle使用當前筆繪制矩形,用當前畫刷填充。
RoundRect使用當前筆繪制圓角矩形,用當前畫刷填充。
位圖函數PatBlt創建位特征。
BitBlt從指定設備上下文拷貝位圖。
StretchBlt把位圖由源矩形和設備移動到目标矩形,必要時拉伸或壓縮位圖以适合目标矩形的維數。
GetPixel獲取指定點像素的RGB顔色值。
SetPixel設置指定點像素為最接近指定色的近似值。
SetPixelV設置指定點坐标為最接近指定色的近似值。SetPixelV比SetPixel快,原因是它不用返回實際繪制點的顔色值。
FloodFill用當前畫刷填充區域。
ExtFloodFill用當前畫刷填充區域。比FloodFill成員函數提供更多靈活性。
MaskBlt使用給定屏蔽和光栅操作對源和目标位圖合并顔色數據。
PlgBlt從源設備上下文的指定矩形到給定設備上下文中指定平行多邊形,執行顔色數據位的位塊傳遞。
文本函數TextOut用當前選取字體在指定位置寫字符串。
ExtTextOut用當前選取字體在矩形區域寫字符串。
TabbedTextOut在指定位置寫字符串,制表符擴展為制表符停止位置數組中指定值。
DrawText在指定矩形内繪制格式化文本。
GetTextExtent使用當前字體在屬性設備上下文上計算文本行的寬度和高度,确定維數。
GetOutputTextExtent使用當前字體在輸出設備上下文上計算文本行的寬度和高度,确定維數。
GetTabbedTextExtent使用當前字體在屬性設備上下文上計算字符串的寬度和高度。
GetOutputTabbedTextExtent使用當前字體在輸出設備上下文上計算字符串的寬度和高度。
GrayString在給定位置繪制暗(灰色)文本。
GetTextAlign獲取文本對齊标記。
SetTextAlign設置文本對齊标記。
GetTextFace以空終止字符串形式把當前字體字樣名拷貝到緩沖區。
GetTextMetrics從屬性設備上下文為當前字體獲取度量。
GetOutputTextMetrics從輸出設備上下文為當前字體獲取度量。
SetTextJustification把空格添加到字符串的中斷字符。
GetTextCharacterExtra對字符間空格數量獲取當前設置。
SetTextCharacterExtra設置字符間空格數量。
字體函數GetFontData從比例字體文件獲取字體度量信息。獲取的信息通過指定字體文件與返回信息長度的偏移量标識。
GetKerningPairs獲取指定設備上下文中當前選取的字體字符實對。
GetOutlineTextMetrics獲取用于TrueType字體的字體度量信息。
GetGlyphOutline獲取用于當前字體中外線字符串的外線曲線或位圖。
GetCharABCWidths從當前字體獲取給定範圍相繼字符以邏輯單位計數的寬度。
GetCharWidth從當前字體獲取給定範圍相繼字符的分數寬度。
GetOutputCharWidth從使用輸出設備上下文的當前字體獲取相繼字符組中各個字符的寬度。
SetMapperFlags改變字體映射表在從邏輯字體到物理字符映射時使用的算法。
GetAspectRatioFilter獲取當前長寬比過濾器的設置。
打印機跳離函數QueryAbort對打印應用調用AbortPro回滾函數,詢問打印是否應終止。
Escape允許應用訪問不能通過GDI直接使用的特殊設備的功能。同時允許訪問Windows跳離函數。應用調用的Escape調用經翻譯傳送到設備驅動程序。
DrawEscape訪問通過圖形設備接口(GDI)不能直接使用的視頻顯示器的繪圖功能。
StartDoc通告設備驅動程序開始一項新打印作業。
StartPage通告設備驅動程序開始新頁。
EndPage通告設備驅動程序頁結束。
SetAbortProc如果打印作業必須終止,設置Windows調用的由程序員提供的回滾函數。
AbortDoc終止當前打印任務,擦除自上次調用StartDoc成員函數以來應用寫入設備的任何内容。
EndDoc結束由StartDoc成員函數啟動的打印作業。
滾動函數ScrollDC水平和垂直滾動位矩形。
元文件函數PlayMetaFile在給定設備上播放指定元文件類型。增強版本的PlayMetaFile顯示以增強格式元文件保存的圖片。元文件可以播放任意次數。
AddMetaFileComment從緩沖區把注釋拷貝到指定增強格式元文件。
路徑函數AbortPath關閉并拒絕設備上下文中任何路徑。
BeginPath打開設備上下文中一個路徑括号。
CloseFigure關閉路徑中一個打開的圖表。
EndPath關閉一個路徑括号,并把括号定義的路徑選擇到設備上下文。
FillPath關閉當前路徑中任何打開的圖表,并用當前畫刷和多邊形填充模式填充路徑内部。
FlattenPath變形選取到當前設備上下文路徑中的任何曲線,把曲線變成一系列直線。
GetMiterLimit返回用于設備上下文的限制。
GetPath獲取定義直線端點和從選擇到設備上下文路徑中找到的曲線控制點的坐标。
SelectClipPath對設備上下文選擇當前路徑作為剪切區域,通過使用指定模式合并新區域和任何現有剪切區域。
SetMiterLimit設備用于設備上下文的連接長度限制。
StrokeAndFillPath關閉路徑中任何打開的圖表,使用當前筆點路徑外線,使用當前畫刷填充它内部。
StrokePath使用當前筆描繪指定路徑。
WidenPath如果路徑使用過了當前選取到設備上下文中的筆點,重新定義當前路徑為要畫的區域。



















