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