怎样在MFC中用双缓存技术画直线,即鼠标点一下开始画线,线随鼠标移动,再次按下即画出直线。
3个回答
展开全部
双缓存?
这个我不清楚,原来还有这样的命名,呵呵~
首先,鼠标左键点击按下的消息响应ON_WM_RBUTTONDOWN(),这时候确立第一个点。
其次,鼠标移动的消息响应ON_WM_MOUSEMOVE(),这是关键。这里因为你要线随鼠标移动,如果你直接把当前点与第一步所得的点连接的话,你会发现整张图都是线。所以这里就需要你把原图复制一张出来并显示这张图(替换原图显示),然后每次响应鼠标移动的时候将当前点与第一步所得的点连接并画在这张复制出来的图上。
最后,鼠标左键点击放开的消息响应ON_WM_LBUTTONUP()。这时候是确立最终点的。你只需画在原图上,并显示该图,并释放你复制出来的那张图就行了。
这是鼠标按下到放开形成一条直线的,你要2次点击也可以,就是在ON_WM_RBUTTONDOWN()做个前后点击的判断取代ON_WM_RBUTTONUP()。代码自己根据实际应用写吧。
这个我不清楚,原来还有这样的命名,呵呵~
首先,鼠标左键点击按下的消息响应ON_WM_RBUTTONDOWN(),这时候确立第一个点。
其次,鼠标移动的消息响应ON_WM_MOUSEMOVE(),这是关键。这里因为你要线随鼠标移动,如果你直接把当前点与第一步所得的点连接的话,你会发现整张图都是线。所以这里就需要你把原图复制一张出来并显示这张图(替换原图显示),然后每次响应鼠标移动的时候将当前点与第一步所得的点连接并画在这张复制出来的图上。
最后,鼠标左键点击放开的消息响应ON_WM_LBUTTONUP()。这时候是确立最终点的。你只需画在原图上,并显示该图,并释放你复制出来的那张图就行了。
这是鼠标按下到放开形成一条直线的,你要2次点击也可以,就是在ON_WM_RBUTTONDOWN()做个前后点击的判断取代ON_WM_RBUTTONUP()。代码自己根据实际应用写吧。
展开全部
事先声明好 CDC BufferDC ; CBitmap BufferBitmap;
准备工作: CreateDC, 然后 CreateCompatibleBitmap
每次需要画东西的时候都是往BufferDC里面画,画好之后bitblt到屏幕上。
准备工作: CreateDC, 然后 CreateCompatibleBitmap
每次需要画东西的时候都是往BufferDC里面画,画好之后bitblt到屏幕上。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用CDC的SetROP2(R2_XORPEN)模式重新画一次,再画新线就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询