MFC基于对话框图片控件绘图删除问题

绘图框架:我用的是对话框模式,在对话框中添加picture控件,把其设置成矩形、白底,这控件就是我用来鼠标写字的区域了实现原理:在类视图中,我添加了一个新类A,整个鼠标响... 绘图框架:我用的是对话框模式,在对话框中添加picture控件,把其设置成矩形、白底,这控件就是我用来鼠标写字的区域了

实现原理:在类视图中,我添加了一个新类A,整个鼠标响应、运动、写字程序都放在类A中,A.h中定义的一些成员:
void Init();
CRect m_rectClient; //构造一对象

CDC m_dcPlot;//--------定义的是设备上下文对象的类----------

CBitmap *m_pbitmapOldPlot;
CBitmap m_bitmapPlot;

CPen m_penPlot;
CPoint m_ptPrevious;
CBrush m_brushBack;

==========A.cpp中代码如下:==================
CWordWrite::CWordWrite()
{
//创建画笔,使用黑色轨迹,线宽3
m_penPlot.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
//创建背景画刷,白色背景
m_brushBack.CreateSolidBrush(RGB(255, 255, 255));
//-----本函数用指定的颜色初始化画刷。随后该画刷就可用于任何设备上下文的当前画刷。
//-----当应用使用完CreateSolidBrush创建的画刷之后,应该从设备上下文中移出该画刷。

//初始值上一个点置为无效
m_ptPrevious.x = -1;
m_ptPrevious.y = -1;
}

CWordWrite::~CWordWrite()
{
if (m_pbitmapOldPlot != NULL)
m_dcPlot.SelectObject(m_pbitmapOldPlot); //返回被替代的对象的指针,将对象选入设备上下文中。

}
void CWordWrite::Init()
{
CClientDC dc(this);
}

//----------------------------------------------------------------------------
//----------------------------鼠标左键起来响应函数----------------------------
//----------------------------------------------------------------------------
void CWordWrite::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
//鼠标左键抬起时,上一个点置为无效
m_ptPrevious.x = -1;
m_ptPrevious.y = -1;
CStatic::OnLButtonUp(nFlags, point);
}

//----------------------------------------------------------------------------
//----------------------------鼠标移动响应函数--------------------------------
//----------------------------------------------------------------------------
void CWordWrite::OnMouseMove(UINT nFlags, CPoint point)
{
CStatic::OnMouseMove(nFlags, point);
}

//----------------------------------------------------------------------------
//----------------------------绘图函数----------------------------------------
void CWordWrite::OnPaint()
{
CPaintDC dc(this); // device context for painting

// TODO: Add your message handler code here
//将内存DC显示到控件中
dc.BitBlt(0,0,m_rectClient.Width(),m_rectClient.Height(),
&m_dcPlot,0,0,SRCCOPY);
//SRCCOPY:直接复制源设备区域到目标设备中
// Do not call CStatic::OnPaint() for painting messages
}
(代码部分没写全,字数不够)
现在问题是:我在控件区域用鼠标写了一些笔划后,我想将其中某段给删除掉,不是全部清除,而是清除指定某点或某一段!!
该如何操作??要用什么函数操作??等大神求解。
(分就20了。唉)
展开
 我来答
百度网友c743fc7
2011-04-09
知道答主
回答量:40
采纳率:0%
帮助的人:0
展开全部
搞个上下文菜单或者菜单项,在选中一个连续线段后执行操作,如果要简单点就直接在鼠标点击的时候判断下面是否有连续线段,有的话就选定这个线段执行操作,复杂点就按下的时候确定这个点,然后判断前一次是否有这样的点,如果这两个点在一个连续的线段上,选中这两点间的线段再执行操作,具体实现可以在书上找找,或者网上搜索下!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sduwuyuwen
2011-04-12 · TA获得超过275个赞
知道答主
回答量:83
采纳率:0%
帮助的人:38.3万
展开全部
如果撤销步骤不多的话,可以定义几个CPoint变量保持前几次鼠标点,撤销时重绘前一次的点即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hlm123yy
2011-04-09 · TA获得超过116个赞
知道答主
回答量:94
采纳率:0%
帮助的人:78.9万
展开全部
用CBrush创造个画刷 颜色为白色像橡皮擦 擦掉
更多追问追答
追问
但我做的不像是画画那种,我要能对该像素具体操作,通过代码指定删除黑点或段
追答
用GetPiexl获取像素点 改变Apa l 值(及透明度)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式