MFC中绘图的问题

我想实现这样一个功能,绘图时,已经存在一个背景图,这个背景图也是自己绘制的,没有颜色,只是单纯的一些格子。再次作图会在这些格子上操作,擦除时只对后来的绘图擦除,对格子没有... 我想实现这样一个功能,绘图时,已经存在一个背景图,这个背景图也是自己绘制的,没有颜色,只是单纯的一些格子。再次作图会在这些格子上操作,擦除时只对后来的绘图擦除,对格子没有影响。有人说用双画布,第一层作图,第二层添加一层透明的画布就可以了。我想知道怎么实现?或者其他解决办法也行……
换一个说法
我在单文档中的OnDraw() 函数中画了一些表格
然后在鼠标移动消息中添加了画直线、举行、圆、橡皮擦等功能
使用橡皮擦功能,不但能擦除自己画的线,也跟同时会把表格给擦除
请问怎样让它不会擦除掉表格呢?
大神说说思路 附几句代码最好不过了
展开
 我来答
凭康适Bc
2013-07-21 · 超过48用户采纳过TA的回答
知道小有建树答主
回答量:142
采纳率:0%
帮助的人:114万
展开全部
呵呵刚答一个画线的就复制过来了
备份一个DC每次都重画直线的区域(重画区域会增加代码量,不怕屏闪就全重画就好了),再把线画上,取消就不画线就好了。
CDC* pDC;
CBitmap m_bitmap; // Offscreen bitmap
CBitmap* m_pOldBitmap; // bitmap originally found in CMemDC
CDC* m_pDC; // Saves CDC passed in constructor
CRect m_rect; // Rectangle of drawing area.
// 备份DC
CreateCompatibleDC(pDC);
m_bitmap.CreateCompatibleBitmap(pDC, m_rect.Width(), m_rect.Height());
m_pOldBitmap = SelectObject(&m_bitmap);
// 画DC
m_pDC->BitBlt(m_rect.left, m_rect.top, m_rect.Width(), m_rect.Height(),
this, m_rect.left, m_rect.top, SRCCOPY);
SelectObject(m_pOldBitmap);
wangpaishi
2013-07-17 · TA获得超过570个赞
知道小有建树答主
回答量:932
采纳率:52%
帮助的人:748万
展开全部
怎样让它不会擦除掉表格呢?
你绘制出的格子或者点线面,你应该自己清楚在什么位置
你是怎么擦除的?怎么会控制不了擦除啊,判断不是网格才擦除就可以了啊

其实我做的话
画直线、举行、圆、橡皮擦等功能,我都会存到List里去,一个图形绘制,一个Item,放到List里去

擦除,就是判断鼠标操作时,选择的点中的是什么坐标,这个坐标位置处是哪个图形,从List里删除这个Item后,重新绘制所有东西,包括什么背景幕布,网格,List中的所有各种图形
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
相思丶猫2C
2013-07-10 · TA获得超过1198个赞
知道小有建树答主
回答量:1432
采纳率:50%
帮助的人:940万
展开全部
先把格子绘制到一个CBitmap中
以后绘制时,先SelectObject这个CBitmap,然后再绘制其他
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式