CRectTracker(橡皮筋類)的應用

2021-06-06 18:17:24 字數 1815 閱讀 6378

大家都知道windows自帶的畫圖軟體中可以用虛線框選擇影象的某個區域,之後便可以拖動、放大、縮小該區域,這是怎麼實現的?下面我將為大家介紹橡皮筋類(crecttracker),它將實現用虛線框選中乙個區域,並可以拖動、放大、縮小該區域。

1.新建乙個單文件應用程式,命名為crecttracker,完成。

2.在ccrecttrackerview中新建乙個crecttracker型別的成員變數m_recttracker,和bool型別的變數m_ischosen,表示是否選擇了,

ccrecttrackerview::ccrecttrackerview()

m_nstyle是設定crecttracker物件的框的屬性,其中crecttracker::dottedline表示該外框是虛線框,crecttracker::resizeinside表示在該區域內部改變大小。

3.void ccrecttrackerview::onlbuttondown(uint nflags, cpoint point)

else

cview::onlbuttondown(nflags, point);

}hittest(point)是用point測試滑鼠在區域的什麼位置,如下表

返回值

代表的含義

-1 點在了四邊形的外部

0 左上角

1 右上角

2 右下角

3 左下角(0,1,2,3順時針轉了一圈)

4 頂部

5 右部

6 底部

7 左部(還是順時針轉了一圈)

8 點在了四邊形的內部,但沒有擊中前面的那八個點

trackrubberband表示跟蹤橡皮筋的邊框,其中this表示擁有該虛線框的視窗,point表示虛線框的起始點,true表示可以往任意方向畫虛線框,若為false,只能往右下畫虛線框。trackrubberband是以左鍵彈起作為結束,在此期間不能響應wm_mousemove訊息,彈起也收不到wm_lbuttonup訊息。下面會介紹如何獲得wm_lbuttonup訊息。

m_rect.normalizerect()是為了防止trackrubberband第三個引數為false引起的錯誤而實施的正規化。

crect::intersectrect(rect1,rect2)表示rect1和rect2是否有交集.

用crecttracker::draw(&dc)繪製矩形區域的8個點以及邊框線.

track(this,point);用來實時更新矩形的變化,是最有魅力的函式,拖動,改變大小都是由它指揮完成,其中this表示擁有該矩形的視窗,point是起始點。左鍵彈起作為結束,在此期間也不能響應wm_mousemove訊息。

4.過載ccrecttrackerview::onsetcursor

bool ccrecttrackerview::onsetcursor(cwnd* pwnd, uint nhittest, uint message)

crecttracker::setcursor(this,nhittest)用來捕捉滑鼠,當滑鼠在該區域裡或區域邊框上時會產生不同的滑鼠圖案,如在區域裡就是十字形的,在邊框上8點不同位置也有不同圖案,此時返回true;在矩形外面就返回false;然後直接返回true不讓視類處理該訊息。

5.void ccrecttrackerview::ondraw(cdc* pdc)

這樣就可以完成本例項的功能了!但若要在wm_lbuttonup裡處理某些特殊的要求,只需在crecttracker::trackrubberband、crecttracker::track下傳送wm_lbuttonup訊息即可,

即sendmessage(wm_lbuttonup,null,null)便可以實現了.

CRectTracker 橡皮筋類

crecttracker 俗稱 橡皮筋 類 是乙個非常有意思的類。你在windows中,在桌面上用滑鼠拖拽,便可以看到乙個虛線的矩形框,它便是橡皮筋.它可以用做顯示邊界,你也可以扽它的八個角用來放大縮小,做框選使用。如何通過程式設計來實現這種功能呢?這就是crecttracker類的作用 介紹橡皮筋...

CRectTracker 橡皮筋 類的使用

crecttracker 俗稱 橡皮筋 類 是乙個非常有意思的類。你在windows中,在桌面上用滑鼠拖拽,便可以看到乙個虛線的矩形框,它便是橡皮筋.它可以用做顯示邊界,你也可以扽它的八個角用來放大縮小,做框選使用。如何通過程式設計來實現這種功能呢?這就是crecttracker類的作用 介紹橡皮筋...

OpenGL 橡皮筋技術

後天圖形學考試,整理了下實驗課上的opengl關於橡皮筋實驗的 簡單實現了如下功能 1.右鍵選單功能響應 2.右鍵選擇畫折線或矩形,可儲存 書上例子演變 3.可選取畫線或畫矩形的顏色,線寬,畫素大小 include include define num 100 折線的最大折線段 int flag 0...