MFC两种拖动鼠标动态画图的方法

一般来说,一次画图的过程分为鼠标左键按下,鼠标移动,鼠标左键弹起。要想在鼠标移动的过程中动态显示所画的图的变化过程,所画的图只能是可以由两个点确定的图形,如直线、矩形、椭圆等等。举例来说,如何画一条线段?我们要知道起点和终点。起点自然是鼠标左键按下时鼠标的位置,终点是鼠标移动时当前的鼠标位置。既然是拖动鼠标动态画图,那么画图的动作自然是在鼠标移动的响应函数OnMouseMove()里完成。要想让图跟着鼠标移动而变化,就必须在鼠标移动时不断根据鼠标新位置画图,然而不停画图,原来画的旧图还停留在那里。本来一次鼠标移动只要画一根线段,现在一次鼠标移动画出好多根线段。所以关键是如何擦除旧图。第一种方法是保存上一次鼠标停留的位置,然后用背景色的画笔把旧图描一遍。

//鼠标左键按下

void C画图Dlg::OnLButtonDown(UINT nFlags, CPoint point)
{
 // TODO: Add your message handler code here and/or call default
  mousemode = 1;//标识鼠标左键已按下
  pt_Begin = pt_End = pt_Mid = point;//pt_Begin标识起点,pt_End标识新终点,pt_Mid标识旧终点
 CDialogEx::OnLButtonDown(nFlags, point);
}

//鼠标移动

void C画图Dlg::OnMouseMove(UINT nFlags, CPoint point)
{
 // TODO: Add your message handler code here and/or call default
 if (mousemode == 1)//确保

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值