在網上看過很多用在mfc對話方塊的介面上用滑鼠畫矩形框的例子,感覺有點亂,同時又達到我想要的效果,
經過不斷的嘗試以及改進,才終於達到我想要的效果。
這部分程式主要實現在對話方塊介面上的picture控制項內用滑鼠拖動畫矩形框並顯示,框大小隨意,且每次
void ccv10dlg::onlbuttondown(uint nflags, cpoint point)
else
if (!isinrct) //沒在矩形框內則滑鼠重新畫矩形
else
if (trect.bottom>pt_rect.bottom)
if (trect.right>pt_rect.right)
if (trect.left
.left)
//設定矩形框大小
m_rctcurtracker.m_rect.setrect(trect.left, trect.top, trect.right, trect.bottom);
m_rctcurtracker.m_rect.normalizerect();
m_rctcurtracker.gettruerect(&rc_showrect);//得到矩形區域的大小 ,經過recttracker後獲取其 rect區域,再將其畫在窗體上,此後的操作與操作rect無異。
rc_showrect.setrect(rc_showrect.left - pt_rect.left, rc_showrect.top - pt_rect.top, rc_showrect.right - pt_rect.left, rc_showrect.bottom - pt_rect.top);
//crect rc_clientrect, crect pt_rect
//獲取矩形框中的內容並儲存,m_subimgrect型別為rect,m_rdrawednum為int,注意防止邊界洩漏
double widthratio = double(image.cols) / rc_clientrect.width();
double heightratio = double(image.rows) / rc_clientrect.height();
m_subimgrect[m_rdrawednum].x = int((rc_showrect.left + 1) * widthratio);
m_subimgrect[m_rdrawednum].y = int((rc_showrect.top + 1)* heightratio);
m_subimgrect[m_rdrawednum].width = int((rc_showrect.width() - 2)* widthratio);
m_subimgrect[m_rdrawednum].height = int((rc_showrect.height() - 2)* heightratio);
subimg = image(m_subimgrect[m_rdrawednum]);
crgn rgn1;
rgn1.createrectrgnindirect(rc_clientrect);
invalidatergn(&rgn1, false); //呼叫onpaint函式重繪視窗,但是保留原來的背景圖
}cdialogex::onlbuttondown(nflags, point);
}void ccv10dlg::onpaint()
else
}}
以上**包含在picture控制項中如何顯示的問題,矩形框在控制項上如何顯示的問題,以及
如何提取滑鼠所畫矩形框中內容的問題,希望對大家有用,有問題可以多多提意見。
CRectTracker 橡皮筋類
crecttracker 俗稱 橡皮筋 類 是乙個非常有意思的類。你在windows中,在桌面上用滑鼠拖拽,便可以看到乙個虛線的矩形框,它便是橡皮筋.它可以用做顯示邊界,你也可以扽它的八個角用來放大縮小,做框選使用。如何通過程式設計來實現這種功能呢?這就是crecttracker類的作用 介紹橡皮筋...
OpenGL 橡皮筋技術
後天圖形學考試,整理了下實驗課上的opengl關於橡皮筋實驗的 簡單實現了如下功能 1.右鍵選單功能響應 2.右鍵選擇畫折線或矩形,可儲存 書上例子演變 3.可選取畫線或畫矩形的顏色,線寬,畫素大小 include include define num 100 折線的最大折線段 int flag 0...
iOS橡皮筋回彈
在html主頁面的header標籤中引入inbounce.js,即。當引入此檔案之後,ios端整個頁面都無法滑動或滾動,若想滾動的元素能夠實現滾動效果,則需要對滾動區域設定固定的高度,即height max height,同時也要設定overflow auto,實現頁面滑動。為防止ios端頁面滾動發...