将作业处理完了...
在前面的基础上继续前行,前面画的是直线什么的,这次做的是连续线条,就像我们写字一样;
view依然以view结尾的,即C工程名View。。。
这次,我们在view类中添加一个BOOL型的私有成员变量m_bDraw,初始值是false;
当我们鼠标左键按下去后时,为true,当左键放开之后,为false,表示线条绘制结束。
部分定义代码:
//添加变量
private:
BOOL m_bDraw;
//构造函数时初始化
m_bDraw = false;
//在OnLButtonDown中
m_bDraw = true;
//在OnLButtonUp中
m_bDraw = false;
重点是添加事件OnMouseMove,这样,就会绘出鼠标移动的轨迹了,即线条
CClientDC dc(this);
//CPen pen(PS_SOLID,1,RGB(255,0,0));
//CPen *pOldPen=dc.SelectObject(&pen);
if(m_bDraw==TRUE)
{
//dc.SetROP2(R2_BLACK);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
m_ptOrigin=point;
}
//dc.SelectObject(pOldPen);
绘出效果:
如果想给线条加一些效果的话,比如给线条加上颜色,即之前所用CPen类,把上述代码的注释部分解开即可:
2.绘制扇形线条
我们在绘制连续线条的基础上,注释掉OnMouseMove里面的m_ptOrigin=point;//修改线条的起点的
CClientDC dc(this);
CPen pen(PS_SOLID,1,RGB(255,0,0));
CPen *pOldPen=dc.SelectObject(&pen);
if(m_bDraw==TRUE)
{
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
//m_ptOrigin=point;
}
dc.SelectObject(pOldPen);
就可以画出这么神奇的图形了...
m_ptOrigin是起始点,如果不变,就会以一个点不断画线;
我们可以看出上述的扇形的边缘并没有封口;
我们可以通过在View中新建CPoint类型的私有成员变量m_ptOld,并在OnLButtonDown中初始化;
private:
CPoint m_ptOld;
BOOL m_bDraw;
CPoint m_ptOrigin;
void CDrawStraightView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_ptOld = point;
m_bDraw = true;
m_ptOrigin = point;
CView::OnLButtonDown(nFlags, point);
}
最后在OnMouseMove添加代码(//可以将之前的注释掉,或者在基础上增加dc.LineTo(m_ptOld)和m_ptOld=point;):
CClientDC dc(this);
CPen pen(PS_SOLID,1,RGB(255,0,0));
CPen *pOldPen=dc.SelectObject(&pen);
if(m_bDraw==TRUE)
{
//dc.SetROP2(R2_BLACK);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.LineTo(m_ptOld);
//修改线段起点
//m_ptOrigin=point;
m_ptOld=point;
}
dc.SelectObject(pOldPen);
效果如下:
好了,今天就这样了,后续更加精彩的给大家...
多多交流...o(∩_∩)o 初学者拜谢