Android 位图撤消重做效果
Android Bitmap Undo Redo Effect
使用铅笔、橡皮、线条、椭圆、三角形、正方形、撤消、重做等多种工具创建 Canvas
撤消、重做不起作用。
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
}
使用撤消-重做的一种变体是在每个操作后存储位图(例如使用 HashMap),然后替换当前位图以预览位图(如果是撤消操作)或下一个位图(如果是此重做操作)。据我所知,android sdk 没有默认 api 来做你想做的事。
我不同意第一个答案,存储位图非常昂贵。
你应该存储的是动作itself.you可以创建一个新的class调用动作,并存储绘图路径,Paint风格,etc.and当用户点击重做按钮时,执行位图上的动作。
我写了一个关于 paintboard 的 demo,它目前只支持撤消操作,但是通过将操作存储在列表中,您可以轻松地将重做功能添加到 it.the 地址是 PaintView。
使用铅笔、橡皮、线条、椭圆、三角形、正方形、撤消、重做等多种工具创建 Canvas
撤消、重做不起作用。
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
}
使用撤消-重做的一种变体是在每个操作后存储位图(例如使用 HashMap),然后替换当前位图以预览位图(如果是撤消操作)或下一个位图(如果是此重做操作)。据我所知,android sdk 没有默认 api 来做你想做的事。
我不同意第一个答案,存储位图非常昂贵。
你应该存储的是动作itself.you可以创建一个新的class调用动作,并存储绘图路径,Paint风格,etc.and当用户点击重做按钮时,执行位图上的动作。
我写了一个关于 paintboard 的 demo,它目前只支持撤消操作,但是通过将操作存储在列表中,您可以轻松地将重做功能添加到 it.the 地址是 PaintView。