用vc给MFC绘图程序添加橡皮擦功能
我用VC已经做好了一个MFC程序,是一个绘图程序,就是能画直线,长方形,圆形,以缩放效果和重绘效果,还能保存的.现在还想做个橡皮擦,现在思路还不是很清晰,毕竟只学了一个学...
我用VC已经做好了一个MFC程序,是一个绘图程序,就是能画直线,长方形,圆形,以缩放效果和重绘效果,还能保存的.现在还想做个橡皮擦,现在思路还不是很清晰,毕竟只学了一个学期,要求是:只要点一下某个图形,该图形就被擦除就行.比如,画了一条直线,只要用橡皮擦点一下该直线就消失.
当然,如果可以实现windows画图程序里的橡皮擦那种部分部分的擦除效果更好.
希望各位大虾最好能提供一下所需的相关类和函数,毕竟我对VC中成千上万的函数及类不清楚. 展开
当然,如果可以实现windows画图程序里的橡皮擦那种部分部分的擦除效果更好.
希望各位大虾最好能提供一下所需的相关类和函数,毕竟我对VC中成千上万的函数及类不清楚. 展开
展开全部
其实每次擦除,就是画一个小的背景色的正方形或者小圆!
以 MouseDown 为开始(设置Flag为TRUE)
MouseMove 时触发擦除方法(Flag为TRUE时)
以 MouseUp 为结束(设置Flag为FALSE)
以 MouseDown 为开始(设置Flag为TRUE)
MouseMove 时触发擦除方法(Flag为TRUE时)
以 MouseUp 为结束(设置Flag为FALSE)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
展开全部
楼主做的是矢量图还是位图,如果是位图,就用leewycyp的方法。
如果是矢量图,把要擦除的图形数据删掉,再重绘其它图形就行了。
如果是矢量图,把要擦除的图形数据删掉,再重绘其它图形就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不知道搂主对 CDC 类清不清楚,该类有一种模式教师 NOR 好像。
当使用该模式画图时,两次一样的操作可以将前面的操作察除。
该模式就是 异或 的意思。
具体的你可以去查找一下,相关图书。
下面代码可以参考下
CClientDC dc(this);
if(point)
{
//dc.TextOut(wParam,lParam,"自定义消息画点!");
CPen newPen(PS_DASH,2,RGB(20,30,40)); //创建新画笔
CPen* oldPen=dc.SelectObject(&newPen); //选入设备环境
dc.MoveTo(wParam,lParam);
dc.LineTo(wParam+200,lParam);
dc.SelectObject(oldPen);
}
else
{
dc.SetROP2(R2_NOTXORPEN);
//dc.TextOut(wParam,lParam-15,"自定义消息画点!");
CPen newPen(PS_DASH,2,RGB(20,30,40)); //创建新画笔
CPen* oldPen=dc.SelectObject(&newPen); //选入设备环境
dc.MoveTo(wParam,lParam-15);
dc.LineTo(wParam+200,lParam-15);
dc.SelectObject(oldPen);
}
在同一地方画两次,就能将前面一次察除了。
要实现橡皮查可以使用这个原理
当使用该模式画图时,两次一样的操作可以将前面的操作察除。
该模式就是 异或 的意思。
具体的你可以去查找一下,相关图书。
下面代码可以参考下
CClientDC dc(this);
if(point)
{
//dc.TextOut(wParam,lParam,"自定义消息画点!");
CPen newPen(PS_DASH,2,RGB(20,30,40)); //创建新画笔
CPen* oldPen=dc.SelectObject(&newPen); //选入设备环境
dc.MoveTo(wParam,lParam);
dc.LineTo(wParam+200,lParam);
dc.SelectObject(oldPen);
}
else
{
dc.SetROP2(R2_NOTXORPEN);
//dc.TextOut(wParam,lParam-15,"自定义消息画点!");
CPen newPen(PS_DASH,2,RGB(20,30,40)); //创建新画笔
CPen* oldPen=dc.SelectObject(&newPen); //选入设备环境
dc.MoveTo(wParam,lParam-15);
dc.LineTo(wParam+200,lParam-15);
dc.SelectObject(oldPen);
}
在同一地方画两次,就能将前面一次察除了。
要实现橡皮查可以使用这个原理
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你应该还没做可以选中某个图形吧,只要你做了事情不就解决了.不仅可以删除还可以移动呢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询