小程序
小游戏
企业微信
微信支付
扫描小程序码分享
画板想做一个撤销功能,现在试了试把每次down,move ,up都作为一个对象保存在数组中,
撤销的话就删掉最后一个重新绘制,但是重新绘制后又好慢啊~~有没有大神提供下思路或者解决方法
12 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
一开始我也是通过保存图片地址来实现的,后面发现如果一直快速画好几遍,有的会变颜色掉,不知楼主会不?
个人觉得一个更好的方法应该是记录绘画动作数组来实现:在绘制时,把动作数组缓存下来,撤销的时候再对已缓存的动作数组处理即可达到撤销效果,
需要查看源码的或者其他疑问的,可以加我v信: liugerliu
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
卡顿我现在还没发现,你可以试下画完图片后重新设置上一次的画笔大小和颜色。你这种方案是在撤销的时候把之前的都重绘一次吗?这种会很慢吧
但这样的话,好像会有个性能问题?我试过类似的逻辑,貌似drawimage后,move事件会变得卡顿,后来我换了另一种思路,如果只是划线,把start到move到end这一次划线操作所经过的点记录下来,每次动态绘制,这样性能就好很多了。不会卡
sorry,忘记了,大致说下方案和实现。每一次start的时候(而不是end或者cancel的时候)获取当前画布上的图片地址,然后把图片地址保存数组(add),撤销的时候,drawimage数组最后一个图片地址,然后删除此索引。(容错判读等等不写了。。)
如果要加恢复功能的话 新加一个数组记录撤销的图片地址就行了。
前提是当前保存的图片路径是有效的情况下
。。。。 解决了为什么不说说方案
记录每次画图动作到数组
http://blog.csdn.net/u014788227/article/details/52250208 仅供参考
我只看过这一块的文档,没用过,大致就是上一次draw以后save,这次画完感觉不对,就restore,然后draw
save和restore怎么使用?大致逻辑能讲下吗
restore行不行?
正在加载...
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
一开始我也是通过保存图片地址来实现的,后面发现如果一直快速画好几遍,有的会变颜色掉,不知楼主会不?
个人觉得一个更好的方法应该是记录绘画动作数组来实现:在绘制时,把动作数组缓存下来,撤销的时候再对已缓存的动作数组处理即可达到撤销效果,
需要查看源码的或者其他疑问的,可以加我v信: liugerliu
卡顿我现在还没发现,你可以试下画完图片后重新设置上一次的画笔大小和颜色。你这种方案是在撤销的时候把之前的都重绘一次吗?这种会很慢吧
但这样的话,好像会有个性能问题?我试过类似的逻辑,貌似drawimage后,move事件会变得卡顿,后来我换了另一种思路,如果只是划线,把start到move到end这一次划线操作所经过的点记录下来,每次动态绘制,这样性能就好很多了。不会卡
sorry,忘记了,大致说下方案和实现。每一次start的时候(而不是end或者cancel的时候)获取当前画布上的图片地址,然后把图片地址保存数组(add),撤销的时候,drawimage数组最后一个图片地址,然后删除此索引。(容错判读等等不写了。。)
如果要加恢复功能的话 新加一个数组记录撤销的图片地址就行了。
前提是当前保存的图片路径是有效的情况下
。。。。 解决了为什么不说说方案
记录每次画图动作到数组
http://blog.csdn.net/u014788227/article/details/52250208 仅供参考
我只看过这一块的文档,没用过,大致就是上一次draw以后save,这次画完感觉不对,就restore,然后draw
save和restore怎么使用?大致逻辑能讲下吗
restore行不行?