MFC中LButtonDown下拖动鼠标绘制直线

本文介绍了如何在MFC应用中利用LButtonDown事件和鼠标移动事件实现在位图视图上绘制直线,同时记录并保存历史线条,避免清除已绘制的线条,以防止闪烁。
摘要由CSDN通过智能技术生成

MFC中LButtonDown下拖动鼠标绘制直线

最近做一个项目,需要一个在绘制位图的视图上画直线,具体要求是按住鼠标左键拖动,然后放开左键绘制出一条直线。(下一次绘制时,不能清除上一次绘制的直线)。

具体思路如下:

(1).当鼠标左键按下时,记录下鼠标的位置,并设置一个标记记录下鼠标左键DOWN(当鼠标左键UP时,设置为UP);

(2).要实时绘制直线,则需要在鼠标移动时,刷新绘制;

(3).由于下一次绘制不能清除上一次绘制的直线,那么在刷新绘制时则需要用一个数组保存下前面绘制的直线,在每次刷新前将以前绘制的直线绘制出来;

(4).将最后一次绘制的直线保存到数组中;

(5).由于绘制较多直线,屏幕会闪射,则需要创建内存缓存DC来绘图;

具体代码实现:

(1).

A在鼠标左键按下消息中:

voidCDrawLineView::OnLButtonDown(UINT nFlags, CPoint point)

{

         m_Start.x = point.x;  //保存鼠标左键按下时坐标,为直线的起点坐标

         m_Start.y = point.y;

         m_LbuttonFlag = 1;  //设置鼠标左键按下标志,为1表示鼠标左键按下

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值