在MFC单文档应用程序中如何画直线
在程序中如何实现鼠标左键点下后拖动鼠标,所画直线随即显示出来,很多教学视频都是在OnLButtonDown函数中才绘制,导致只有我拖动鼠标结束鼠标左键弹起时才会出现直线,...
在程序中如何实现鼠标左键点下后拖动鼠标,所画直线随即显示出来,很多教学视频都是在OnLButtonDown函数中才绘制,导致只有我拖动鼠标结束鼠标左键弹起时才会出现直线,能不能有种方法可以像windows的画图板那样画直线或者点一下左键确定起点后会生成一条直线随着鼠标的移动自动伸长、收缩、变换方向直至我再次点左键确定终点的时候绘制出所要直线,最好可以给下源代码,想了好几天了都没有实现~~谢谢了~~
展开
1个回答
展开全部
OnLButtonDown函数中用一个全局变量保存第一次点击的坐标pt,并用一个BOOL型全局变量bDraw用于判断是否正在线,将其值为true;
然后添加WM_MOUSEMOVE消息响应函数,如果bDraw为true,在里面先将整个客户区用背景色(如默认的白色)填充,然后在pt与当前鼠标的位置之间画一条直线。
添加WM_LBUTTONUP消息响应,在里面将bDraw置为false;
当然如果按照上面我说的方法,只能花一条直线,化第二条时会把之前的一条覆盖掉。另外还有可能出现闪烁。用双缓冲绘图可以很好的解决这两个问题,你自己好好想想吧
然后添加WM_MOUSEMOVE消息响应函数,如果bDraw为true,在里面先将整个客户区用背景色(如默认的白色)填充,然后在pt与当前鼠标的位置之间画一条直线。
添加WM_LBUTTONUP消息响应,在里面将bDraw置为false;
当然如果按照上面我说的方法,只能花一条直线,化第二条时会把之前的一条覆盖掉。另外还有可能出现闪烁。用双缓冲绘图可以很好的解决这两个问题,你自己好好想想吧
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询