国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
MFC畫(huà)線(xiàn)功能總結(jié)

本文僅用于學(xué)習(xí)交流,商業(yè)用途請(qǐng)支持正版!轉(zhuǎn)載請(qǐng)注明:http://www.cnblogs.com/mxbs/p/6216464.html 


MFC畫(huà)線(xiàn)功能要點(diǎn)有二:其一,鼠標(biāo)按下時(shí)記錄初始位置為線(xiàn)的起始端點(diǎn),其二,利用不同的方法實(shí)現(xiàn)畫(huà)線(xiàn)。下面著重學(xué)習(xí)總結(jié)畫(huà)線(xiàn)功能實(shí)現(xiàn)方法。


  在OnLButtonDown函數(shù)中記錄起始端點(diǎn),CPoint m_ptOrigin = point;


  在OnLButtonUp函數(shù)中實(shí)現(xiàn)畫(huà)線(xiàn)。方法如下:


  畫(huà)線(xiàn)方法一:利用SDK全局函數(shù)實(shí)現(xiàn)視圖窗口畫(huà)線(xiàn)功能


//獲取設(shè)備描述表
HDC hdc;
//調(diào)用全局函數(shù)獲得當(dāng)前窗口的設(shè)備描述表,CWnd::m_hWnd根據(jù)繼承原理,CDrawView繼承了CWnd類(lèi)的數(shù)據(jù)成員
hdc = ::GetDC(m_hWnd);
//移動(dòng)到線(xiàn)條的起點(diǎn)
MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);//第四個(gè)參數(shù)用于保存鼠標(biāo)移動(dòng)前的位置,此處不需要,設(shè)為NULL
//畫(huà)線(xiàn)
LineTo(hdc,point.x,point.y);
//釋放設(shè)備描述表
::ReleaseDC(m_hWnd,hdc);


畫(huà)線(xiàn)方法二:利用MFC的CDC類(lèi)實(shí)現(xiàn)畫(huà)線(xiàn)功能


//說(shuō)明:CDC類(lèi)封裝了所有與繪圖相關(guān)的操作
CDC* pDC = GetDC();//定義CDC類(lèi)型的指針,利用CWnd類(lèi)的成員函數(shù)GetDC獲得當(dāng)前窗口的設(shè)備描述表對(duì)象的指針
pDC -> MoveTo(m_ptOrigin);//利用CDC類(lèi)的成員函數(shù)MoveTo和LineTo完成畫(huà)線(xiàn)功能
pDC -> LineTo(point);
ReleaseDC(pDC);


  畫(huà)線(xiàn)方法三:利用CClientDC類(lèi)


//說(shuō)明:此類(lèi)派生于CDC類(lèi),在構(gòu)造時(shí)調(diào)用GetDC()函數(shù),在析構(gòu)時(shí)調(diào)用ReleaseDC()函數(shù),因此無(wú)需顯示調(diào)用這兩個(gè)函數(shù)。
//CClientDC dc(this);//在當(dāng)前視圖窗口畫(huà)線(xiàn)方法
CClientDC dc(GetParent());//獲取當(dāng)前視圖窗口的父窗口,可以在父窗口畫(huà)線(xiàn)
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);


畫(huà)線(xiàn)方法四:利用CWindowDC類(lèi)
//CWindowDC dc(this);//只能在視類(lèi)中畫(huà)線(xiàn)
CWindowDC dc(GetParent());//可以在父窗口中畫(huà)線(xiàn)
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);


如果我們要更多功能的繪制方法,可以利用更多的資源和方法,如:


更多方法之:繪制彩色線(xiàn)條(設(shè)備描述表中默認(rèn)有一個(gè)黑色畫(huà)筆)


CPen pen(PS_SOLID,5,RGB(255,255,0));//創(chuàng)建畫(huà)筆對(duì)象
CClientDC dc(this);
CPen* pOldPen = dc.SelectObject(&pen);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.SelectObject(pOldPen);


更多方法之:繪制連續(xù)線(xiàn)條


//* 此時(shí)需要添加鼠標(biāo)移動(dòng)消息響應(yīng)函數(shù)OnMouseMove,當(dāng)鼠標(biāo)移動(dòng)時(shí)記錄位置并繪制短線(xiàn),然后需要將此時(shí)鼠標(biāo)位置設(shè)置為下一次繪制的起點(diǎn)坐標(biāo),     


//* 這樣便可以繪制連續(xù)線(xiàn)條了。為此,添加一個(gè)判斷是否在畫(huà)線(xiàn)的布爾變量m_bTrue,在視類(lèi)構(gòu)造函數(shù)中初始化為true,在OnLButtonDown中初始化為true,  


//* 在OnLButtonUp中初始化為false,OnMouseMove函數(shù)如下:                                                   


// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
//創(chuàng)建一個(gè)紅色的、寬度為1的實(shí)線(xiàn)畫(huà)筆
CPen pen(PS_SOLID,1,RGB(255,0,0));
//把創(chuàng)建的畫(huà)筆選入設(shè)備描述表
CPen *pOldPen = dc.SelectObject(&pen);
if(m_bTrue == true)
{
  dc.MoveTo(m_ptOrigin);
  dc.LineTo(point);


  m_ptOrigin = point;//如果不修改起點(diǎn) 坐標(biāo),畫(huà)線(xiàn)效果是扇形
}
//恢復(fù)設(shè)備描述表
dc.SelectObject(pOldPen);


這樣就可以繪制連續(xù)線(xiàn)條了。


更多方法之:使用畫(huà)刷繪圖
//創(chuàng)建一個(gè)紅色畫(huà)刷
CBrush brush(RGB(255,0,0));
//創(chuàng)建并獲得設(shè)備描述表
CClientDC dc(this);
//用紅色畫(huà)刷填充鼠標(biāo)拖動(dòng)過(guò)程形成的矩形區(qū)域
dc.FillRect(CRect(m_ptOrigin,point),&brush);


更多方法之:位圖畫(huà)刷


//注:需要先添加一個(gè)位圖資源,ID為IDB_BITMAP1


//創(chuàng)建位圖對(duì)象
CBitmap bitmap;
//加載位圖資源
bitmap.LoadBitmapW(IDB_BITMAP1);
//創(chuàng)建位圖畫(huà)刷
CBrush brush(&bitmap);
//創(chuàng)建并獲得設(shè)備描述表
CClientDC dc(this);
//用位圖畫(huà)刷填充鼠標(biāo)拖動(dòng)過(guò)程形成的矩形區(qū)域
dc.FillRect(CRect(m_ptOrigin,point),&brush);


先介紹這么多吧,這些都是我的學(xué)習(xí)總結(jié),


如果有疑問(wèn),可以聯(lián)系giserdev@163.com,更多內(nèi)容請(qǐng)參考:http://www.cnblogs.com/mxbs/,技術(shù)交流請(qǐng)加QQ群:586571286。




分類(lèi): VC++深入詳解
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
C語(yǔ)言簡(jiǎn)單實(shí)現(xiàn)畫(huà)圖板。
你該不會(huì)繪畫(huà)的時(shí)候還畫(huà)不好線(xiàn)吧?這種改善方法不要錯(cuò)過(guò)
【通達(dá)信】如何畫(huà)曲線(xiàn) 輸出后只顯示線(xiàn)形,不顯示數(shù)值輸出的文字
『原創(chuàng)』用C++開(kāi)發(fā)WM應(yīng)用系列(4)
VC知識(shí)庫(kù)文章 - GDI 編程基礎(chǔ)(一)GDI Vs GDI
AI中的平滑工具如何使用?
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服