MFC-在Picture控件中画橡皮筋线

本文介绍了一个使用MFC在对话框中实现鼠标绘制线条功能的例子。通过捕捉鼠标移动事件并利用设备描述表(DC)进行绘图操作,实现了简单的绘图应用。文章详细展示了如何在响应鼠标移动时获取坐标,并利用绘图函数完成线条绘制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

void CwindowsMFCDlg::OnMouseMove(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	// 按下左键移动开始画图
	if (nFlags == MK_LBUTTON)
	{
		CDC* pdcpic = m_picture.GetDC( );   // 获得DC 
		HDC m_hdc= pdcpic->m_hDC;

		CRect rc2;
		CWnd* pwnd2 = GetDlgItem ( IDC_PICTURE ); 
		pwnd2->GetClientRect ( &rc2 );   // 获得IDC_ICTURE控件的客户区大小
		pwnd2->MapWindowPoints ( this , &rc2 );  // 将坐标转换为对话框窗口的坐标
		
		int oldRop=::SetROP2(m_hdc,R2_NOT);
		// 画线
		::MoveToEx(m_hdc,start.x-rc2.left,start.y-rc2.top, NULL);
		::LineTo(m_hdc, old.x-rc2.left,old.y-rc2.top);
		::MoveToEx(m_hdc, start.x-rc2.left, start.y-rc2.top, NULL);
		::LineTo(m_hdc, point.x-rc2.left, point.y-rc2.top);
		old = point;
	}
	CDialog::OnMouseMove(nFlags, point);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值