一 CClientDC程序員
CClientDC 派生於CDC 類算法
客戶區設備上下文,其矩形區域爲窗口整個客戶區,客戶區的左上角的座標爲(0,0),與特定的窗口相關聯, 其構造函數中包含有GetDC(); 析構函數中包含有ReleaseDC();數組
因此調用時直接使用,在調用完後也不用ReleaeDC();安全
二 CPaintDCapp
至關於SDK 的BeginPaint() 和 EndPaint() 響應WM_PAINT 消息,進行窗口無效區的重繪,它的構造函數中包含BeginPaint(HWND hwnd,LPPAINTSTRUCT lpStruct) 得到ide
重繪區的設備上下文,在析構函數調用EndPaint() 釋放設備上下文,因此在窗口發送WM_PAINT消息重繪時必須用CPaintDC, CPaintDC 還有一個做用是在重繪完後,從消息函數
隊列中消除WM_PAINT ,不然窗口會一直重繪,所以CPaintDC 只能在WM_PAINT 消息響應函數OnPaint() 中使用。工具
三 CWindowDC字體
得到整個屏幕區域(客戶區和非客戶區),容許在顯示器的任意位置繪圖 ,構造函數調用GetWindowDC() 得到相關聯的窗口的上下文,經過它可在窗口的任意位置繪圖,這種DC同WM_NCPAINT 消息一塊兒發送。spa
四 CDC
基類,封裝了SDK 下對設備上下文的操做
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 | 若是路徑使用過了當前選取到設備上下文中的筆點,從新定義當前路徑爲要畫的區域 |