撤消和重做画布

时间:2015-06-01 12:09:11

标签: android canvas

我正在尝试在我的应用程序中实现撤消和重做。我正在阅读其他问题和论坛,但代码不适合我。我在这里只发布相关代码以便于阅读,因为我绘制了不同的形状。对于重做和撤消,我在另一个活动中有两个按钮,我在每个按钮的onclicklistener中调用函数redo或undo。

private void setupDrawing(){
    drawPath=new Path();

    //Set up paint

    paths.add(drawPaint);
}

public boolean onTouchEvent(MotionEvent event){
    tX=event.getX();
    tY=event.getY();
    switch(event.getAction()){
        case MotionEvent.ACTION_DOWN:

            //Action move down

        break;
        case MotionEvent.ACTION_MOVE:

            //Action move

        break;
        case MotionEvent.ACTION_UP:
            drawCanvas.drawCircle(x, y, radius, drawPaint); //Example of drawing object
            drawPath = new Path();
            paths.add(drawPath);
        break;
        default:
            return false;
    }
    invalidate();
    return true;
}    

public void undo(){
    if(paths.size()>0){
        undonePaths.add(paths.remove(paths.size()-1));
        invalidate();
    }
    if(undo==true){
        undo=false;
    }else{
        undo=true;
    }
}

public void redo(){
    if(undonePaths.size()>0){
        paths.add(undonePaths.remove(undonePaths.size()-1));
        invalidate();
    }
    if(redo==true){
        redo=false;
    }else{
        redo=true;
    }
}

1 个答案:

答案 0 :(得分:0)

我发现我的代码出了什么问题。我在画布上画画,我需要将形状添加到路径中。如果有人需要,我会留下代码。

{{1}}