画笔3

在MFC当中,所有与作图相关的操作,MFC提供这样的一种类     CDC

5.曲线作法:
之前的都是一条条线段,而曲线是由一系列点来组成的,可以知道我们都是在鼠标按下
左键时,而产生的一系列的点,应该要有两点:
一,是起点要保存(之前已经做过了)
二,是把所有的点都要捕获,可以用鼠标移动的消息响应,所以应该的View类中添加
消息WM_MOUSEMOVE,这个消息的作用,只要移动鼠标,那么这个消息都被捕获到,
这不是我们要的。

所以要判断什么时候,让它来捕获!可以添加一个BOOL变量在View类中
        也就是当鼠标按下时,它为真,抬起时,为假。
CDrawView::CDrawView()
{
	// TODO: add construction code here
//	m_ptOrigin=0;
	m_pOld=0;
	m_bDraw=FALSE;//BOOL变量的初始化

}



void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
//	MessageBox("View clicked");
	m_bDraw=TRUE;
    m_ptOrigin=m_pOld=point;
	CView::OnLButtonDown(nFlags, point);
}



void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) 
{
	m_bDraw=FALSE;

	
	CView::OnLButtonUp(nFlags, point);
}
然后在移动鼠标的函数中
再进行判断
void CDrawView::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	
	CClientDC dc(this);
	CPen pen(PS_SOLID,1,RGB(100,250,120));
	CPen *pOldpen=dc.SelectObject(&pen);//选到设备描述表当中
	if(m_bDraw==TRUE)
	{
		dc.MoveTo(m_ptOrigin);//移动到原点
	//	dc.LineTo(point);//画到终点
		dc.LineTo(m_pOld);//添加变量m_pOld,初始化0,赋值为原点,
		dc.MoveTo(m_pOld);//相当于在终点上边上一条线
		dc.LineTo(point);
		m_pOld=point;
	}
	dc.SelectObject(pOldpen);
	CView::OnMouseMove(nFlags, point);
}
效果图::::


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值