如何在MFC绘图程序中添加橡皮功能?

NICKVUJICIC 2013-09-02 03:51:30
我已经做好了一个程序,能够实现画直线,矩形,椭圆,三角形,现在有两个问题
一是如何添加一个橡皮的功能,把之前画的图擦掉
二是如何设置画出图形的默认填充颜色为白色,我现在画出的默认填充颜色都是黑色啊
求大神指导,感激不尽!
...全文
897 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
NICKVUJICIC 2013-09-06
  • 打赏
  • 举报
回复
引用 6 楼 yuanshouyan1823 的回复:
这是擦除直线的方法:dc为设备环境句柄 dc.SetROP2(R2_NOT);//逆转当前屏幕颜色来画线的绘图方式 dc.MoveTo(m_PointOrigin); dc.LineTo(m_pOld); //擦去上一次的线 dc.MoveTo(m_PointOrigin); dc.LineTo(point);//绘制这一次的临时线 m_pOld=point; 关键是这一句dc.SetROP2(R2_NOT);将设备环境的底色取反!
请问m_PointOrigin,m_pOld,point,分别代表什么啊?point是要新定义吗?
墨雁 2013-09-05
  • 打赏
  • 举报
回复
这是擦除直线的方法:dc为设备环境句柄 dc.SetROP2(R2_NOT);//逆转当前屏幕颜色来画线的绘图方式 dc.MoveTo(m_PointOrigin); dc.LineTo(m_pOld); //擦去上一次的线 dc.MoveTo(m_PointOrigin); dc.LineTo(point);//绘制这一次的临时线 m_pOld=point; 关键是这一句dc.SetROP2(R2_NOT);将设备环境的底色取反!
wshcdr 2013-09-04
  • 打赏
  • 举报
回复
简单的橡皮擦的实现可以如楼上所说, 也就是做一个颜色和背景色相同的线条,达到擦除的效果。
发型不乱hy 2013-09-03
  • 打赏
  • 举报
回复
橡皮擦其实跟绘图是一样的,只不过绘图颜色是背景色,给人一种擦除的感觉,其实还是绘图
victor_woo 2013-09-03
  • 打赏
  • 举报
回复
引用 楼主 u011900724 的回复:
我已经做好了一个程序,能够实现画直线,矩形,椭圆,三角形,现在有两个问题 一是如何添加一个橡皮的功能,把之前画的图擦掉 二是如何设置画出图形的默认填充颜色为白色,我现在画出的默认填充颜色都是黑色啊 求大神指导,感激不尽!
橡皮擦有2中模式:1 参见Window自带画图,那个橡皮和实际纸上绘画后擦除是一样的,橡皮移动到哪里,哪里就被擦掉,但是程序实现其实是画上一个橡皮的形状(图纸背景色)遮挡住后面的形状 2. 判断鼠标和形状的位置关系,单击擦除整个形状 按你的需要选择实现方式
NICKVUJICIC 2013-09-02
  • 打赏
  • 举报
回复
引用 1 楼 u010203275 的回复:
COLORREF color=::GetSysColor(COLOR_3DFACE); 这个color就是系统背景颜色 用color填充你的画刷作为橡皮擦功能
我试了一下,还是不太会,能具体告诉我怎么操作吗?还有第二个问题怎么解决呢?
非权威装家 2013-09-02
  • 打赏
  • 举报
回复
COLORREF color=::GetSysColor(COLOR_3DFACE); 这个color就是系统背景颜色 用color填充你的画刷作为橡皮擦功能

19,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧