日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CCD类详解

發布時間:2023/12/18 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CCD类详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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
GetTextExtentGetOutputTextExtent
GetTabbedTextExtentGetOutputTabbedTextExtent
GetTextMetricsGetOutputTextMetrics
GetCharWidthGetOutputCharWidth


CDC類成員 ?

數據成員
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如果路徑使用過了當前選取到設備上下文中的筆點,重新定義當前路徑為要畫的區域

?

?????? *?CClientDC子類?

?????? 1. CClientDC類只能在客戶區繪圖;
?????? 2. 所謂客戶區指窗口區域中去掉邊框、標題欄、菜單欄、工具欄、狀態欄等之外的部分,它是用戶可以操作的區域;
?????? 3. 在使用CClientDC進行繪圖時,一般要調用GetClientRect()函數來獲取客戶區域的大小;
?????? 4. CClientDC類在構造函數中調用Windows API函數GetDC(),在析構時響應ReleaseDC();
?????? 5. CClientDC類的窗口句柄保存在成員變量m_hWnd,為構造CClientDC,需將CWnd作為參數傳遞給構造函數。

??????? *?CWindowDC子類?

?????? 1. CWindowDC對象在構造時調用Windows API函數GetWindowDC,在析構時調用相應的API函數ReleaseDC,這意味著CWindowDC對象可訪問CWnd所指向的為整個全屏幕區域;
?????? 2. CWindowDC允許在顯示器的任意位置繪圖。坐標原點在整個窗口的左上角。
?????? 3. 在使用CWindowDC進行繪圖時,一般要調用GetWindowRect函數來獲取整個應用程序窗口區域的大小;
?????? 4. CWindowDC類的窗口句柄保存在成員變量m_hWnd,為構造CClientDC,需將CWnd作為參數傳遞給構造函數。

??????? *?CPaintDC子類?

?????? 1. 通常CPaintDC用來響應WM_PAINT消息。一般應用在OnPaint函數.?
?????? 2. CClientDC也是從CDC派生出來的.構造時自動調用GetDC函數,析構時自動調用ReleaseDC函數.一般應用于客戶區窗口的繪制.
?????? 3. CPaintDC只能在WM_PAINT消息中使用, 用于有重畫消息發出時才使用的內存設備環境, 而CClientDC和客戶區相關,有重畫消息發出時才使用的內存設備環境, 可在任何地方使用.
?????? 4. 在處理窗口重畫時,必須使用CPaintDC,否則WM_PAINT消息無法從消息隊列中清除,將引起不斷的窗口重畫。


? ? ?? *?CMetaFileDC子類?

?????? 1. 在應用程序中,有一些圖像是需要經常重復顯示的.這樣的圖形最好事先繪制好形成一個文件,并存儲在內存中,當用到它時直接打開就可以了,這種圖形文件叫做圖元文件;?
?????? 2. 制作圖元文件需要一個特殊的設備描述環境CMetaFileDC類.它也是由CDC類繼承來的,因此它包含了CDC類的所有繪圖方法。
?????? 3. 一般先在視圖類的OnCreate()函數中創建圖元文件.具體做法為:先定義一個CMetaFileDC類的對象,然后用該對象的Create()函數創建它,該函數的原型為:BOOL Create(LPCTSTR lpszFilename=NULL);
?????? 4. 接下來使用由CDC繼承來的繪圖方法繪制圖元文件,最后使用Close()函數結束繪制并保存該圖元文件到類的數據成員中(該數據成員的類型應為HMETAFILE)。
?????? 5. 當需要顯示該圖元文件時,使用CDC類的成員函數PlayMetaFile()。當不再使用該圖元文件時,要用函數DeleteMetaFile()將其刪除。

總結

以上是生活随笔為你收集整理的CCD类详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。