怎样在MFC中用双缓存技术画直线,即鼠标点一下开始画线,线随鼠标移动,再次按下即画出直线。

 我来答
莫恶
2011-07-07
知道答主
回答量:20
采纳率:0%
帮助的人:6.7万
展开全部
双缓存?
这个我不清楚,原来还有这样的命名,呵呵~
首先,鼠标左键点击按下的消息响应ON_WM_RBUTTONDOWN(),这时候确立第一个点。
其次,鼠标移动的消息响应ON_WM_MOUSEMOVE(),这是关键。这里因为你要线随鼠标移动,如果你直接把当前点与第一步所得的点连接的话,你会发现整张图都是线。所以这里就需要你把原图复制一张出来并显示这张图(替换原图显示),然后每次响应鼠标移动的时候将当前点与第一步所得的点连接并画在这张复制出来的图上。
最后,鼠标左键点击放开的消息响应ON_WM_LBUTTONUP()。这时候是确立最终点的。你只需画在原图上,并显示该图,并释放你复制出来的那张图就行了。

这是鼠标按下到放开形成一条直线的,你要2次点击也可以,就是在ON_WM_RBUTTONDOWN()做个前后点击的判断取代ON_WM_RBUTTONUP()。代码自己根据实际应用写吧。
noodlest
2011-07-07 · TA获得超过785个赞
知道小有建树答主
回答量:724
采纳率:100%
帮助的人:720万
展开全部
事先声明好 CDC BufferDC ; CBitmap BufferBitmap;
准备工作: CreateDC, 然后 CreateCompatibleBitmap
每次需要画东西的时候都是往BufferDC里面画,画好之后bitblt到屏幕上。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
婧子cW
2012-03-12
知道答主
回答量:2
采纳率:0%
帮助的人:1891
展开全部
用CDC的SetROP2(R2_XORPEN)模式重新画一次,再画新线就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式