CObject
└CDC
CDC類定義的是設備上下文對象的類。
CDC對象提供處理顯示器或打印機等設備上下文的成員函數,以及處理與窗口客戶區對應的顯示上下文的成員。
通過CDC對象的成員函數進行所有的繪圖。
類對設備上下文操作提供了成員函數,處理繪圖工具。安全型圖形設備接口(GDI)對象收集,以及處理顏色和調色板。
它還為獲取和設置繪圖屬性、映射,處理視點、窗口擴展、轉換坐標,處理區域、剪貼、繪制直線及繪制簡單橢圓和多邊形等形狀提供了成員函數。
另外還為繪制文本、處理字體,使用打印機跳轉,滾動和播放元文件提供成員函數。
使用CDC對象時要構造它,然後調用與它平等的、使用設備上下文的Windows函數的成員函數。
註意:
Windows 95下所有屏幕坐標限制在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
GetTextExtent GetOutputTextExtent
GetTabbedTextExtent GetOutputTabbedTextExtent
GetTextMetrics GetOutputTextMetrics
GetCharWidth GetOutputCharWidth
有關CDC的更多信息,請參閱聯機文檔“Visual C++程序員指南”中的“設備上下文”。
#include <afxwin.h>
請參閱:CPaintDC, CClientDC, CWindowDC, CMetaFileDC
CDC類成員
數據成員 m_hDC CDC對象使用的輸出設備上下文
m_hAttribDC CDC對象使用的輸出屬性上下文
構造函數 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 如果路徑使用過了當前選取到設備上下文中的筆點,重新定義當前路徑為要畫的區域