真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MFC繪圖CDC-創(chuàng)新互聯(lián)

文章目錄
  • CDC繪圖
    • DC(Device Context)設(shè)備描述表 \ 設(shè)備上下文 \ 或者設(shè)備環(huán)境
    • GDI(Graphics Device Interface)圖形設(shè)備接口
    • MFC常見(jiàn)設(shè)備描述表:CDC、CCientDC 、 CPaintDC、CMetaFileDC、CWindowDC
    • HDC GetDC(HWND hWnd) 、CDC *pDC=pWnd->GetDC()
    • ReleaseDC(pDC)
    • CDC::BitBlt()
    • CDC::GetOutputTextExtent()
    • CDC::StretchBlt()
    • CreateCompatibleBitmap() 創(chuàng)建兼容性視圖

專業(yè)從事網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì),高端網(wǎng)站制作設(shè)計(jì),成都小程序開(kāi)發(fā),網(wǎng)站推廣的成都做網(wǎng)站的公司。優(yōu)秀技術(shù)團(tuán)隊(duì)竭力真誠(chéng)服務(wù),采用H5建站+CSS3前端渲染技術(shù),響應(yīng)式網(wǎng)站建設(shè),讓網(wǎng)站在手機(jī)、平板、PC、微信下都能呈現(xiàn)。建站過(guò)程建立專項(xiàng)小組,與您實(shí)時(shí)在線互動(dòng),隨時(shí)提供解決方案,暢聊想法和感受。CDC繪圖 DC(Device Context)設(shè)備描述表 \ 設(shè)備上下文 \ 或者設(shè)備環(huán)境

設(shè)備描述表定義一組圖形對(duì)象及其屬性、影響輸出的圖形方式(數(shù)據(jù))結(jié)構(gòu)。

windows提供設(shè)備描述表,用于應(yīng)用程序和物理設(shè)備之間進(jìn)行交互,從而提供了應(yīng)用程序設(shè)計(jì)的平臺(tái)無(wú)關(guān)性。

設(shè)備描述表是一種數(shù)據(jù)結(jié)構(gòu),它包括了一個(gè)設(shè)備(如顯示器和打印機(jī))的繪制屬性相關(guān)的信息。所有的繪制操作通過(guò)設(shè)備描述表進(jìn)行。應(yīng)用程序不能直接訪問(wèn)設(shè)備描述表,只能由各種相關(guān)API函數(shù)通過(guò)設(shè)備描述表的句柄間接訪問(wèn)該結(jié)構(gòu)。
屬性定義了GDI函數(shù)的工作細(xì)節(jié),在這里屬性確定了文字的顏色,x坐標(biāo)和y坐標(biāo)映射到窗口顯示區(qū)域的方式等。
包含GDI需要的所有關(guān)于顯示界面情況的描述字段,包括相連的物理設(shè)備和各種各樣的狀態(tài)信息。
定義了一系列圖形對(duì)象及其相關(guān)的屬性,以及會(huì)影響輸出結(jié)果的繪圖方式。這些圖形對(duì)象包括:畫(huà)筆(用于畫(huà)直線),筆刷(用于繪圖和填充),位圖(用于屏幕的拷貝或滾動(dòng)),調(diào)色板(用于定義可用的顏色集),剪裁區(qū)(用于剪裁和其他操作),路徑(用于繪圖和畫(huà)圖操作)。設(shè)備環(huán)境函數(shù)用于對(duì)設(shè)備環(huán)境進(jìn)行創(chuàng)建、刪除或獲取信息。

windows 窗口一旦創(chuàng)建,它就自動(dòng)地產(chǎn)生了與之相對(duì)應(yīng)的設(shè)備描述表數(shù)據(jù)結(jié)構(gòu),用戶可運(yùn)用該結(jié)構(gòu),實(shí)現(xiàn)對(duì)窗口顯示區(qū)域的GDI操作,如劃線、寫(xiě)文本、繪制位圖、填充等,并且所有這些操作均要通過(guò)設(shè)備描述表句柄了進(jìn)行。

屏幕設(shè)備描述表:與顯示設(shè)備具有一定的對(duì)應(yīng)關(guān)系,在windows GDI界面下,它總是相關(guān)與某個(gè)窗口或這窗口上的某個(gè)顯示區(qū)域。
窗口的設(shè)備描述表:一般指的是窗口的客戶區(qū),不包括標(biāo)題欄、菜單欄所占有的區(qū)域,而對(duì)于整個(gè)窗口來(lái)說(shuō),其設(shè)備描述表嚴(yán)格意義上來(lái)講應(yīng)該稱為窗口設(shè)備描述表,它包含窗口的全部顯示區(qū)域。

Windows 程序在屏幕、打印機(jī)或其它設(shè)備上畫(huà)圖時(shí),它并不是將像素直接輸出到設(shè)備上,而是將圖繪制到由設(shè)備描述表表示的邏輯意義上的"顯示平面"上去。通過(guò)設(shè)備描述表調(diào)用顯示卡驅(qū)動(dòng),由顯示卡驅(qū)動(dòng)程序訪問(wèn)顯存實(shí)現(xiàn)繪圖輸出。
在Windows畫(huà)圖之前,Windows程序從GDI獲取設(shè)備描述表句柄HDC(HDC hDC=::GetDC(NULL)),并在每次調(diào)用完GDI輸出函數(shù)后將句柄返回給GDI。

GDI(Graphics Device Interface)圖形設(shè)備接口

負(fù)責(zé)系統(tǒng)與繪圖程序之間的信息交換,處理所有Windows程序的圖形輸出。

在Windows操作系統(tǒng)下,絕大多數(shù)具備圖形界面的應(yīng)用程序都離不開(kāi)GDI,我們利用GDI所提供的眾多函數(shù)就可以方便的在屏幕、打印機(jī)及其它輸出設(shè)備上輸出圖形,文本等操作。GDI的出現(xiàn)使程序員無(wú)需要關(guān)心硬件設(shè)備及設(shè)備驅(qū)動(dòng),就可以將應(yīng)用程序的輸出轉(zhuǎn)化為硬件設(shè)備上的輸出,實(shí)現(xiàn)程序開(kāi)發(fā)者與硬件設(shè)備隔離,大大方便了開(kāi)發(fā)工作。

在屏幕或者其它輸出設(shè)備上輸出圖形或者文字:1. 先獲得一個(gè)稱為設(shè)備描述表( DC:Device Context)的對(duì)象的句柄。 2. 以它為參數(shù),調(diào)用各種GDI函數(shù)實(shí)現(xiàn)各種文字或圖形的輸出。

設(shè)備描述表句柄一旦獲得,那么系統(tǒng)將使用默認(rèn)的屬性值填充設(shè)備描述表結(jié)構(gòu)。

如果有必要,我們可以使用一些GDI函數(shù)獲取和改變?cè)O(shè)備描述表中的屬性值。

MFC常見(jiàn)設(shè)備描述表:CDC、CCientDC 、 CPaintDC、CMetaFileDC、CWindowDC

CDC:將Windows API封裝成一個(gè)類來(lái)操作。

CCientDC:代表窗口客戶區(qū)的設(shè)備描述表。其構(gòu)造函數(shù)CClientDC(CWnd *pWin)通過(guò)::GetDC獲取指定窗口的客戶區(qū)的設(shè)備描述表HDC,并且使用成員函數(shù)Attach把它和CClientDC對(duì)象捆綁在一起;其析構(gòu)函數(shù)使用成員函數(shù)Detach把設(shè)備描述表句柄HDC分離出來(lái),并調(diào)用::ReleaseDC釋放設(shè)備描述表HDC。

CPaintDC:僅僅用于響應(yīng)WM_PAINT消息時(shí)繪制窗口,因?yàn)樗臉?gòu)造函數(shù)調(diào)用了**::BeginPaint**獲取設(shè)備描述表HDC,并且使用成員函數(shù)Attach把它和CPaintDC對(duì)象捆綁在一起;析構(gòu)函數(shù)使用成員函數(shù)Detach把設(shè)備描述表句柄HDC分離出來(lái),并調(diào)用::EndPaint釋放設(shè)備描述表HDC,而::BeginPaint和::EndPaint僅僅在響應(yīng)WM_PAINT時(shí)使用。

CMetaFileDC :用于生成元文件。

CWindowDC :代表**整個(gè)窗口區(qū)(包括非客戶區(qū))**的設(shè)備描述表。其構(gòu)造函數(shù)CWindowDC(CWnd *pWin)通過(guò)::GetWindowDC獲取指定窗口的客戶區(qū)的設(shè)備描述表HDC,并使用Attach把它和CWindowDC對(duì)象捆綁在一起;其析構(gòu)函數(shù)使用Detach把設(shè)備描述表HDC分離出來(lái),調(diào)用::ReleaseDC釋放設(shè)備描述表HDC。

HDC GetDC(HWND hWnd) 、CDC *pDC=pWnd->GetDC()

取得hWnd窗口的設(shè)備描述表句柄,獲得DC的使用權(quán),可以使用它的所有函數(shù)。當(dāng)hWnd參數(shù)為NULL時(shí),取得整個(gè)屏幕的設(shè)備描述表句柄。
HWND hWnd:要控制的窗口的句柄。
HDC hDC:DC的句柄。

ReleaseDC(pDC)

釋放設(shè)備描述表。

詳解DC、CDC、HDC、句柄、設(shè)備上下文

CDC::BitBlt()

將某一內(nèi)存塊的數(shù)據(jù)傳送到另一內(nèi)存塊,前一內(nèi)存塊被稱為 "源 ",后一內(nèi)存塊被稱為 "目標(biāo) "。圖象程序開(kāi)發(fā)者使用Blit的函數(shù)在內(nèi)存中將某頁(yè)面上的一幅位圖經(jīng)過(guò)一定的變換轉(zhuǎn)移到另一個(gè)頁(yè)面上。

BOOL BitBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop);

hDestDC目標(biāo)設(shè)備環(huán)境的句柄
x目標(biāo)設(shè)備環(huán)境的矩形區(qū)域的左上角的x坐標(biāo)
y目標(biāo)設(shè)備環(huán)境的矩形區(qū)域的左上角的y坐標(biāo)
nWidth目標(biāo)設(shè)備環(huán)境的矩形區(qū)域的寬度值
nHeight目標(biāo)設(shè)備環(huán)境的矩形區(qū)域的高度值
hSrcDC源設(shè)備環(huán)境的句柄
xSrc源設(shè)備環(huán)境的矩形區(qū)域的左上角的x坐標(biāo)
ySrc源設(shè)備環(huán)境的矩形區(qū)域的左上角的y坐標(biāo)
dwRop光柵操作符 (Rop),它是指源位圖與目標(biāo)位圖以及圖案刷的顏色值進(jìn)行布爾運(yùn)算的方式

常用的光柵操作碼及含義 :

  • BLACKNESS 用黑色填充目標(biāo)矩形區(qū)域.
  • DSTINVERT 將目標(biāo)矩形圖象進(jìn)行反相.
  • MERGECOPY 將源矩形圖象與指定的圖案刷(Pattern)進(jìn)行布爾 "與 "運(yùn)算.
  • MERGEPAINT 將源矩形圖形經(jīng)過(guò)反相后,與目標(biāo)矩形圖象進(jìn)行布爾 "或 "運(yùn)算.
  • NOTSRCCOPY 將源矩形圖象經(jīng)過(guò)反相后,復(fù)制到目標(biāo)矩形上.
  • NOTSRCERASE 先將源矩形圖象與目標(biāo)矩形圖象進(jìn)行布爾 "或 "運(yùn)算,然后再將得圖象進(jìn)行反相.
  • PATCOPY 將指定的圖案刷復(fù)制到目標(biāo)矩形上.
  • PATINVERT 將指定的圖案刷與目標(biāo)矩形圖象進(jìn)行布爾 "異或 "運(yùn)算.
  • PATPAINT 先將源矩形圖象進(jìn)行反相,與指定的圖案刷進(jìn)行布爾 "或 "運(yùn)算,再與目標(biāo)矩形圖象進(jìn)行布爾 "或 "運(yùn)算SRCAND 將源矩形圖象與目標(biāo)矩形圖象進(jìn)行布爾 "與 "運(yùn)算.
  • SRCCOPY 將源矩形圖象直接復(fù)制到目標(biāo)矩形上.
  • SRCERASE 將目標(biāo)矩形圖象進(jìn)行反相,再與源矩形圖象進(jìn)行布爾 "與 "運(yùn)算.
  • SRCINVERT 將源矩形圖象與目標(biāo)矩形圖象進(jìn)行布爾 "異或 "運(yùn)算.
  • SRCPAINT 將源矩形圖象與目標(biāo)矩形圖象進(jìn)行布爾 "或 "運(yùn)算.
  • WHITENESS 用白色填充目標(biāo)矩形區(qū)域.
void CMainDlg::DrawToolPhotoButton(CDC &dc)
{CDC  memDC ;
	memDC.CreateCompatibleDC ( &dc ) ;
	CBitmap*  pBitmap ;		//load all bitmap
	CBitmap*  pOldBitmap ;	//save old bitmap temp
	//分配bitmap對(duì)象內(nèi)存
	pBitmap = new CBitmap ;
	pBitmap ->LoadBitmap ( IDB_GPS_B ) ;
	pOldBitmap = memDC.SelectObject ( pBitmap ) ;
	//將圖片COPY到指定的像素位置
	dc.BitBlt ( 111,111, 111, 111, &memDC, 0, 0, SRCCOPY ) ;
	memDC.SelectObject ( pOldBitmap ) ;
	//釋放bitmap對(duì)象內(nèi)存
	delete pBitmap ;
}

CDC::BitBlt用法

CDC::GetOutputTextExtent()

使用當(dāng)前字體計(jì)算輸出設(shè)備上下文中一行文本的寬度和高度以確定尺寸。

Microsoft CDC 類

CDC::StretchBlt()

BOOL StretchBlt( int x, int y,int nWidth,int nHeight, CDC* pSrcDC, intxSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop)

返回值:如果位圖已經(jīng)繪制,則返回非零值,否則為0。
參數(shù): x 目標(biāo)矩形左上角的X邏輯坐標(biāo)。
y 目標(biāo)矩形左上角的Y邏輯坐標(biāo)。
nWidth 目標(biāo)矩形的寬度(邏輯單位)。
nHeight 目標(biāo)矩形的高度(邏輯單位)。
pSrcDC 指定源設(shè)備上下文。
xSrc 源矩形左上角的X邏輯坐標(biāo)。
ySrc 源矩形左上角的Y邏輯坐標(biāo)。
nSrcWidth 源矩形的寬度(邏輯單位)。
nSrcHeight 源矩形的高度(邏輯單位)。
dwRop 指定光柵操作。

CreateCompatibleBitmap() 創(chuàng)建兼容性視圖
HBITMAP CreateCompatibleBitmap(HDC hdc,int nWidth,int nHeight);

創(chuàng)建與指定的設(shè)備環(huán)境相關(guān)的設(shè)備兼容的位圖。
hdc: 設(shè)備環(huán)境句柄。
nWidth:指定位圖的寬度,單位為像素。
nHeight:指定位圖的高度,單位為像素。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


文章名稱:MFC繪圖CDC-創(chuàng)新互聯(lián)
文章路徑:http://weahome.cn/article/djjijc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部