橡皮筋技術,有三個過程:
1. 滑鼠左鍵按下:記錄起始點。
2. 滑鼠移動:畫出從起始點到現有點的直線,並刪除上一條直線。
3. 滑鼠左鍵鬆開:畫出起始點到現有點的直線。
我是通過取反操作來進行的:
dc.SetROP2(R2_NOT);
過程一:
void Cdraw_line_rubber_band_skillView::OnMButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加訊息處理常式代碼和/或調用預設值
flag = true;
m_ptOld = m_ptOrigin = point;
CView::OnMButtonDown(nFlags, point);
}
過程二:
void Cdraw_line_rubber_band_skillView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加訊息處理常式代碼和/或調用預設值
if(flag) {
CClientDC dc(this);
dc.SetROP2(R2_NOT);
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptOld);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
m_ptOld = point;
CView::OnMouseMove(nFlags, point);
}
}
過程三:
void Cdraw_line_rubber_band_skillView::OnMButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加訊息處理常式代碼和/或調用預設值
flag = false;
CClientDC dc(this);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
CView::OnMButtonUp(nFlags, point);
}
轉自:http://blog.csdn.net/shuimu12345678/article/details/8043169
橡皮筋技術,有三個過程:
1. 滑鼠左鍵按下:記錄起始點。
2. 滑鼠移動:畫出從起始點到現有點的直線,並刪除上一條直線。
3. 滑鼠左鍵鬆開:畫出起始點到現有點的直線。
我是通過取反操作來進行的:
dc.SetROP2(R2_NOT);
過程一:
void Cdraw_line_rubber_band_skillView::OnMButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加訊息處理常式代碼和/或調用預設值
flag = true;
m_ptOld = m_ptOrigin = point;
CView::OnMButtonDown(nFlags, point);
}
過程二:
void Cdraw_line_rubber_band_skillView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加訊息處理常式代碼和/或調用預設值
if(flag) {
CClientDC dc(this);
dc.SetROP2(R2_NOT);
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptOld);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
m_ptOld = point;
CView::OnMouseMove(nFlags, point);
}
}
過程三:
void Cdraw_line_rubber_band_skillView::OnMButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加訊息處理常式代碼和/或調用預設值
flag = false;
CClientDC dc(this);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
CView::OnMButtonUp(nFlags, point);
}
轉自:http://blog.csdn.net/shuimu12345678/article/details/8043169