GDI+实现拖动画直线(橡皮筋效果)
2014 年 3 月 11 日 GDI+实现拖动画直线(橡皮筋效果)无评论
通过使用SetROP2函数清除上一条线来实现橡皮筋的效果,在OnMouseMove中的关键代码如下:
int nOldRop = SetROP2(m_MainMemdc, R2_NOTXORPEN);
HPEN hPen = CreatePen(PS_SOLID, 1, RGB(0x00, 0x00, 0xFF));
pdc->SelectObject(hPen);
m_MainMemdc.MoveTo(m_ptOrigin);
m_MainMemdc.LineTo(m_ptOld);
SetROP2(m_MainMemdc, nOldRop);
m_MainMemdc.MoveTo(m_ptOrigin);
m_MainMemdc.LineTo(m_ptCurrent);
DeleteObject(hPen);
m_ptOld = m_ptCurrent;
HPEN hPen = CreatePen(PS_SOLID, 1, RGB(0x00, 0x00, 0xFF));
pdc->SelectObject(hPen);
m_MainMemdc.MoveTo(m_ptOrigin);
m_MainMemdc.LineTo(m_ptOld);
SetROP2(m_MainMemdc, nOldRop);
m_MainMemdc.MoveTo(m_ptOrigin);
m_MainMemdc.LineTo(m_ptCurrent);
DeleteObject(hPen);
m_ptOld = m_ptCurrent;
其中m_MainMemdc为双缓冲中的内存缓冲,m_ptOrigin, m_ptOld均为OnMouseDown中的point,m_ptCurrent为OnMouseMove中的point,pdc亦为m_MainMemdc。
Tags: GDI+ 拖动画线,橡皮筋
发表评论