cdc

程序CDC類

中文介紹


CDC類定義的是設備上下文對象的類。
CDC對象提供處理顯示器或印表機等設備上下文的成員函數,以及處理與窗口客戶區對應的顯示上下文的成員。
通過CDC對象的成員函數進行所有的繪圖。
類對設備上下文操作提供了成員函數,處理繪圖工具。安全型圖形設備介面(GDI)對象收集,以及處理顏色和調色板。
它還為獲取和設置繪圖屬性、映射,處理視點、窗口擴展、轉換坐標,處理區域、剪貼、繪製直線及繪製簡單橢圓和多邊形等形狀提供了成員函數。
另外還為繪製文本、處理字體,使用印表機跳轉,滾動和播放元文件提供成員函數。
使用CDC對象時要構造它,然後調用與它平等的、使用設備上下文的Windows函數的成員函數。
注意:
Windows 95下所有屏幕坐標限制在16位以內。因此向CDC成員函數傳遞的int必須在-32768至32767之間。
Windows使用與設備無關的圖形設備環境(DC :Device Context) 進行顯示。MFC基礎類庫定義了設備環境對象類----CDC類。
程序設計信息
Uses m_hAttribDCUses m_hDC
GetTextExtentGetOutputTextExtent
GetTabbedTextExtentGetOutputTabbedTextExtent
GetTextMetricsGetOutputTextMetrics
GetCharWidthGetOutputCharWidth
For more information on CDC, seeDevice ContextsinVisual C++ Programmer's Guide.
#include
CGdiObject
說到CDC類就不能不提一下CGdiObject---圖形對象類。在Windows應用程序中,設備環境與圖形對象共同工作,協同完成繪圖顯示工作。就像畫家繪畫一樣,設備環境好比是畫家的畫布,圖形對象好比是畫家的畫筆。用畫筆在畫布上繪畫,不同的畫筆將畫出不同的畫來。選擇合適的圖形對象和繪圖對象,才能按照要求完成繪圖任務。

CDC繼承


父類:從 CObject 直接繼承而來。繼承了CObject類的各種特性,如動態創建等等。
子類:CClientDC-------代表操作窗口的DC ,是比較常用的一個子類
CMetaFileDC ------響應Meta File的DC ,Meta File是一些GDI消息。
CPaintDC-------響應WM_PAINT消息的DC。
CWindowDC ------代表整個屏幕的DC

數據成員


數據成員只有兩個:
HDC m_hDC : CDC對象使用的輸出設備上下文
HDC m_hAttribDC : CDC對象使用的屬性設備上下文
二者在CDC對象創建時指向相同的設備上下文。
所需頭文件:#include

成員函數


CDC類有很多成員函數,這裡主要介紹比較常用的繪圖成員函數,包括繪製點、直線、矩形、橢圓、多邊形、文本以及點陣圖等的成員函數。
COLORREF SetPixel(int x,int y,COLORREF crColor);
COLORREF SetPixel(POINT point,COLORREF crColor);
上面兩個成員函數用來將指定坐標點的像素設置為指定的顏色,這樣就實現了畫點功能。參數x為點的邏輯x坐標;參數y為點的邏輯y坐標;參數crColor為要為點設置的顏色;參數point指定點的邏輯x坐標和邏輯y坐標,可以為其傳入POINT結構體變數或者CPoint對象。
CPoint MoveTo(int x,int y);
CPoint MoveTo(POINT point);
將當前點移動到指定位置。參數x指定新位置的邏輯x坐標;參數y指定新位置的邏輯y坐標;參數point指定新位置的邏輯x坐標和邏輯y坐標,可以為其傳入POINT結構體變數或者CPoint對象。
BOOL LineTo(int x,int y);
BOOL LineTo(POINT point);
繪製一條從當前點到指定點(不包括指定點)的直線。參數x為指定點的邏輯x坐標;參數y為指定點的邏輯y坐標;參數point為指定點的邏輯x坐標和邏輯y坐標。一般我們繪製直線時就可以先調用MoveTo函數移動當前點到某個位置,然後調用LineTo畫直線。
BOOL Rectangle(int x1,int y1,int x2,int y2);
BOOL Rectangle(LPCRECT lpRect);
使用當前畫筆繪製矩形。參數x1指定矩形左上角的x坐標;參數y1指定矩形左上角的y坐標;參數x2指定矩形右下角的x坐標;參數y2指定矩形右下角的y坐標;以上坐標均為邏輯單位。參數lpRect為矩形對象的指針,可以為其傳入CRect對象或RECT結構體變數的指針。
BOOL Ellipse(int x1,int y1,int x2,int y2);
BOOL Ellipse(LPCRECT lpRect);
繪製橢圓。參數x1指定橢圓的外接矩形左上角的x坐標;參數y1指定橢圓的外接矩形左上角的y坐標;參數x2指定橢圓的外接矩形右下角的x坐標;參數y2指定橢圓的外接矩形右下角的y坐標;以上坐標均為邏輯單位。參數lpRect指定橢圓的外接矩形,可以傳入CRect對象或RECT結構體變數的指針。
BOOL Polyline(LPPOINT lpPoints,int nCount);
由指定的多邊形頂點繪製多邊形。參數lpPoints為指向一個POINT結構體變數數組或CPoint對象數組的指針,其中的POINT結構體變數或CPoint對象代表了多邊形頂點的坐標;參數nCount為數組中點的個數,至少為2。
virtual BOOL TextOut(int x,int y,LPCTSTR lpszString,int nCount);
BOOL TextOut(int x,int y,const CString& str);
使用當前選擇的字體在指定位置輸出文本。參數x指定文本起始點的x坐標;參數y指定文本起始點的y坐標;參數lpszString為要輸出的文本字元串;參數nCount指定字元串中的位元組個數;參數str為包含要輸出的字元的CString對象。這兩個函數在上一節中其實已經講到了。
BOOL BitBlt(
int x,
int y,
int nWidth,
int nHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
DWORD dwRop
);
從源設備上下文拷貝一幅點陣圖到當前設備上下文。參數x指定目標矩形區域左上角的邏輯x坐標;參數y指定目標矩形區域左上角的邏輯y坐標;參數nWidth指定目標矩形區域和源點陣圖的寬度(邏輯單位);參數nHeight指定目標矩形區域和源點陣圖的高度(邏輯單位);參數pSrcDC為指向源設備上下文的CDC對象的指針,如果dwRop指定了一個不包含源的光柵操作,那麼pSrcDC可以為NULL;參數xSrc指定源點陣圖左上角的邏輯x坐標;參數ySrc指定源點陣圖左上角的邏輯y坐標;參數dwRop指定要執行的光柵操作,光柵操作碼定義了GDI如何將當前畫刷顏色、源點陣圖顏色和目標點陣圖顏色組合形成新的顏色,下面是一些常用的光柵操作碼及含義:
BLACKNESS:表示使用與物理調色板的索引0相關的色彩來填充目標矩形區域,(對預設的物理調色板而言,該顏色為黑色)。
DSTINVERT:表示使目標矩形區域顏色取反。
MERGECOPY:表示使用布爾型的AND(與)操作符將源矩形區域的顏色與特定模式組合一起。
MERGEPAINT:通過使用布爾型的OR(或)操作符將反向的源矩形區域的顏色與目標矩形區域的顏色合併。
NOTSRCCOPY:將源矩形區域顏色取反,於拷貝到目標矩形區域。
NOTSRCERASE:使用布爾類型的OR(或)操作符組合源和目標矩形區域的顏色值,然後將合成的顏色取反。
PATCOPY:將特定的模式拷貝到目標點陣圖上。
PATPAINT:通過使用布爾OR(或)操作符將源矩形區域取反后的顏色值與特定模式的顏色合併。然後使用OR(或)操作符將該操作的結果與目標矩形區域內的顏色合併。
PATINVERT:通過使用XOR(異或)操作符將源和目標矩形區域內的顏色合併。
SRCAND:通過使用AND(與)操作符來將源和目標矩形區域內的顏色合併。
SRCCOPY:將源矩形區域直接拷貝到目標矩形區域。
SRCERASE:通過使用AND(與)操作符將目標矩形區域顏色取反后與源矩形區域的顏色值合併。
SRCINVERT:通過使用布爾型的XOR(異或)操作符將源和目標矩形區域的顏色合併。
SRCPAINT:通過使用布爾型的OR(或)操作符將源和目標矩形區域的顏色合併。
WHITENESS:使用與物理調色板中索引1有關的顏色填充目標矩形區域。(對於預設物理調色板來說,這個顏色就是白色)。

命令編程


用途
更改 SCCS 增量中的註釋。
語法
cdc -rSID [ -m [ModificationRequestList ] ] [ -y [Comment ] ] File ...

命令描述


cdc 命令更改指定的 SCCS 增量(SID 變數)的修改請求(MR)和註釋,以用於每個已命名的“源代碼控制系統”(SCCS)文件。如果指定了目錄名,cdc 命令會在該目錄中的所有 SCCS 文件(即所有其名稱具有 s. 前綴的文件)上執行所請求的操作。如果指定了 -(減號)來替換 File,則 cdc 命令會讀取標準輸入並將每行解釋為 SCCS 文件的名稱。
僅當生成了 SID 或擁有此文件和目錄時,才可以更改 SID 的註釋和 MR。