關於各種dc的例項簡單使用

2021-06-16 05:24:58 字數 2200 閱讀 7246

用win32api畫線

hdc hdc;

hdc=::getdc(m_hwnd);

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

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

::releasedc(m_hwnd,hdc);*/

用封裝的cdc畫線

/* cdc *pdc=getdc();

pdc->moveto(m_porigin);

pdc->lineto(point);

releasedc(pdc);*/

用cdc派生的cclientdc畫線

cclientdc dc(this);              //dc和view聯絡

cclientdc dc(getparent());   //將dc和frame聯絡

dc.moveto(m_porigin);     

dc.lineto(point);

這就不需要我們去呼叫dc了,在它物件構造析構的時候自動完成

用cdc派生的cwindowdc 畫線

cwindowdc dc(this);

cwindowdc dc(getparent());

dc.moveto(m_porigin);    //這也不需要我們去呼叫dc了

dc.lineto(point);

這也不需要我們去呼叫dc了,在它物件構造析構的時候自動完成

注意,它能訪問到整個螢幕,客戶區和非客戶區(標題欄和選單)

cwindowdc dc(getdesktopwindow());我們就可以畫到桌面,主要看

你將dc和哪個視窗聯絡起來了

想畫其他顏色的線條,可以建立乙個新畫筆,然後選到dc中

用cpen類

cpen pen(ps_geometric ,1,rgb(0,0,255));    (用後面引數構造乙個畫筆物件,這都忘了。。。)

cclientdc dc(this);

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

dc.moveto(m_porigin);

dc.lineto(point);

dc.selectobject(poldpen);

//將現在的畫筆選入裝置上下文,然後返回乙個舊畫筆的指標,我們儲存起來,用完這個畫 筆,再把以前的選回去

畫刷,填充

cbrush brush(rgb(255,0,0));

cclientdc dc(this);

dc.fillrect(crect(m_porigin,point),&brush);

cbitmap bitmap;

bitmap.loadbitmap(idb_bitmap1);              //用位圖填充

cbrush  brush(&bitmap);

cclientdc dc(this);

dc.fillrect(crect(m_porigin,point),&brush);

cclientdc dc(this);

cbrush *pbrush=cbrush::fromhandle((hbrush)getstockobject(null_brush));//(強制轉換)獲取空畫刷控制代碼再轉為指標

cbrush  *poldbrush=dc.selectobject(pbrush);

dc.rectangle(crect(m_porigin,point));

dc.selectobject(poldbrush);

fromhandle 從控制代碼轉到指標           

fillrect和rectangle方法是不同的,前者提供乙個畫刷,所以不用選中畫刷,而後者,我們需要建立畫刷再選入

實現連續劃線功能:宣告乙個bool變數,buttondown為真,buttonup為假,

cclientdc dc(this);

if(m_bdraw==true)             //為真的時候,響應滑鼠移動這個資訊

cclientdc dc(this);

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

cpen *poldpen=dc.selectobject(&pen);            //複習填充更換畫筆的**

if(m_bdraw==true)

dc.selectobject(poldpen);

關於輪廓的各種使用

include cv.h include highgui.h include cvaux.h include cxcore.h include include using namespace std using namespace cv define pi 3.14159f void drawbox...

DC和RC的簡單介紹

dc 在windows下,使用gdi 圖形裝置介面 開發應用程式時,首先需要獲得乙個device context 裝置描述表,簡稱dc 然後才能在這個dc下完成繪圖工作,這一過程就類似於現實生活中紙和筆的關係,dc就是紙,而象刷子 畫筆這樣 的gdi物件就是筆 採用什麼樣的刷子和筆,或者什麼顏色都是...

關於DC和SelectObject()函式的理解

在gdi中,dc device context 是乙個非常重要的概念。有的書中,將dc翻譯為裝置描述表 windows 程式設計 第五版 作者charles petzold 也有的書將dc翻譯為裝置上下文。到底什麼是dc?用現實中的例子來理解可能更容易些。如果你喜歡畫畫,你得先準備了畫布,畫筆,顏料...