四種DC的用法

2021-08-03 21:17:07 字數 2019 閱讀 7641

1)api函式方法用hdc

hdchdc;

hdc=::getdc(m_hwnd);

movetoex(hdc,m_ptorigin.x,m_ptorigin.y,null);

lineto(hdc,point.x,point.y);

::releasedc(m_hwnd,hdc);//必須成對使用

這裡獲得getdc()函式需要跟releasedc()函式成對使用

2)用cdc類成員函式。此時別忘記releasedc

cdc *pdc=getdc();

pdc->moveto(m_ptorigin);

pdc->lineto(point);

releasedc(pdc);//必須成對使用

同樣需要成對使用手動釋放dc

3)用cclientdc

cclientdc dc(this);

//cclientdc dc(getparent());

dc.moveto(m_ptorigin);

dc.lineto(point);//此處不需要releasedc,因為cclientdc會自動釋放dc

cclientdc建構函式傳遞乙個視窗類的物件。其在用完後自動釋放dc,不需要顯式的呼叫releasedc()

4)用cwindowdc,用它甚至可以整個螢幕區域畫線

cwindowdc dc(this);

//cwindowdc dc(getparent());

/*cwindowdc dc(getdesktopwindow());//此時可以在整個螢幕上畫線。

dc.moveto(m_ptorigin);

dc.lineto(point);*/

cpen pen(ps_dot,1,rgb(0,255,0));

cclientdc dc(this);

cpen *poldpen=dc.selectobject(&pen);

dc.moveto(m_ptorigin);

dc.lineto(point);

dc.selectobject(poldpen);

同樣cwindowdc建構函式也需要傳遞乙個視窗類的物件。與cclientdc的區別是該物件可以訪問整個視窗區域,包括框架視窗(選單欄,工具欄)。而cclientdc只能訪問的是客戶區。

這裡同時可以初步了解一下

cpen *poldpen=dc.selectobject(&pen);函式,同時注意一下其返回值!

這是gdi畫圖的特點,當給dc執行一次selectobject,它將返回前一次selectobject的內容,繪圖完畢,執行dc.selectobject(poldpen)。

就相當於你在畫布上畫圖,你手裡本來預設拿著乙隻白色的畫筆,現在你要畫藍色線條,所以你選了乙個藍色畫筆,畫圖完畢,你還要恢復你手裡預設拿著的白色畫筆。

this的四種用法

js 中的this是比較難理解的。這裡將介紹this的具體用法。主要是下面的四種方法 1.作為物件的方法 2.作為普通函式中 3.作為構造函式呼叫 一 作為物件的方法使用,this指向這個物件 for example var adou a 1,getadou function console.log...

typedef的四種用法

用途一 定義一種型別的別名,而不只是簡單的巨集替換。可以用作同時宣告指標型的多個物件。比如 char pa,pb 這多數不符合我們的意圖,它只宣告了乙個指向字元變數的指標,和乙個字元變數 以下則可行 typedef char pchar 一般用大寫 pchar pa,pb 雖然 char pa,pb...

指標的四種用法

用指標變數儲存記憶體位址 通過指標訪問它所儲存的記憶體位址上的資料 對指標進行計算,使指標發生偏移 在函式間傳遞指標,達到傳遞資料的效果 如果指標指向某個函式,我們可以通過呼叫指標來呼叫它所指向的函式 通過這個函式輸入三十個分數,並列印出大於60分的成績。includetypedef void fu...