VC++ MFC 橡皮筋技术
在 MFC 下绘制直线,使用橡皮筋技术,可以使直线效果跟随鼠标移动
//OnLButtionDown
m_ptOrigin=m_ptEnd=point;
//OnMouseMove
CClientDCdc(this);
if(nFlags==MK_LBUTTON)
{
dc.SetROP2(R2_NOT);
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptEnd);
m_ptEnd=point;
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptEnd);
}
但是这个只能实现黑色直线的绘制,我们想要画其他颜色的线,并且希望使用
不同类型的线和线宽,因此要建一个画笔,指定想要的画笔的类型,如实线、
虚线、点线,指定线宽和画笔颜色。
voidCGraphic1View::OnMouseMove(UINTnFlags,CPointpoint)
{
if(MK_LBUTTON==nFlags)
{
CClientDCdc(this);
intoldmode=dc.SetROP2(R2_NOTXORPEN);
CPenpen(m_nLineStyle,m_nLineWidth,m_clr),*oldpen;
oldpen=dc.SelectObject(&pen);
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptEnd);
m_ptEnd=point;
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptEnd);
dc.SelectObject(oldpen);