如何实现这种画图橡皮擦效果

PepperEggFriedRice 2017-05-02 03:13:41
现在有一张图片 只擦除红色的笔,不擦除背景。



差不多就是InvalidateRect()的效果。但是InvalidateRect()是刷整个窗口肯定不能用。
求大佬解答。


dc和graphics有相关类似刷新区域的函数吗? 好像是透明的效果那种,PNG待透明层类似的。。。
...全文
1407 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_45460217 2020-03-07
  • 打赏
  • 举报
回复
方便提供一个demo嘛
Fiee丶 2018-12-06
  • 打赏
  • 举报
回复
引用 6 楼 PepperEggFriedRice 的回复:
解决了。用纹理画笔直接贴就行了。 效果如下
要怎么弄啊,这个效果
赞哥爱看书 2017-12-07
  • 打赏
  • 举报
回复
引用 6 楼 PepperEggFriedRice 的回复:
解决了。用纹理画笔直接贴就行了。 效果如下
老哥能给个demo么 现在做了个桌面画图的程序 橡皮擦做不出来...
PepperEggFriedRice 2017-05-08
  • 打赏
  • 举报
回复
解决了。用纹理画笔直接贴就行了。
效果如下
zgl7903 2017-05-04
  • 打赏
  • 举报
回复
类似于Photoshop 分层显示, 背景作为一个层, 前景位图先将Alpha通道填充为透明,划线时清除相应位置的透明,擦除时再填充成透明, 刷新时 先贴图背景层, AlphaBlend 贴图前景层
schlafenhamster 2017-05-03
  • 打赏
  • 举报
回复
“现在有一张图片 只擦除红色的笔,不擦除背景” 这张图已经有红色的笔了 ?还是后来 画上去的 ?
WJN92 2017-05-02
  • 打赏
  • 举报
回复
把背景保存起来
PepperEggFriedRice 2017-05-02
  • 打赏
  • 举报
回复
引用 1 楼 pcradio 的回复:
BOOL InvalidateRect(  HWND hWnd,           // handle to window
  CONST RECT* lpRect,  // rectangle coordinates
  BOOL bErase          // erase state);
InvalidateRect就是区域刷新啊,你第一个参数传NULL才是刷新整个窗口。
我想实现橡皮擦的效果。。。不是刷新整个窗口。。。
阿源是少年 2017-05-02
  • 打赏
  • 举报
回复
BOOL InvalidateRect(  HWND hWnd,           // handle to window
  CONST RECT* lpRect,  // rectangle coordinates
  BOOL bErase          // erase state);
InvalidateRect就是区域刷新啊,你第一个参数传NULL才是刷新整个窗口。

19,469

社区成员

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

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