【问题标题】:Undo function in painting removing all paths绘画中的撤消功能删除所有路径
【发布时间】:2016-04-07 20:39:05
【问题描述】:

假设我已经画了两条线,而我刚刚画的第二条线,我想删除它。所以我编写了以下代码来删除最后绘制的线。代码如下

 public void onClickUndoLast() {
        if (paths.size() > 0) {

                undonePaths.add(paths.remove(paths.size()-1));
                invalidate();

        } else {

        }
        // toast the user
    }

它正在删除路径,但它正在清除所有带有路径的画布。我不知道是什么问题。 ?我使用的类与this 问题中使用的类相同。所以请不要将此问题标记为重复,因为那里给出的解决方案不起作用。你们有什么想法吗? ?

编辑 1:

我的on Draw方法是这样的

@Override
protected void onDraw(Canvas canvas) {
    /*
     * Draw the image into center
     */
    //int cx = (mWidth - mBitmap.getWidth()) >> 1; // same as (...) / 2
    //int cy = (mHeight - mBitmap.getHeight()) >> 1;

    canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
    for (PathPoints p : paths) {
        mPaint.setColor(p.getColor());

        mPaint.setStrokeWidth(p.getStrockWidth());
        if (p.isTextToDraw()) {
            //canvas.drawText(p.textToDraw, p.x, p.y, mPaint);
        } else {
            canvas.drawPath(p.getPath(), mPaint);
        }
    }
    //mPaint.setColor(Color.GREEN);
    mPaint.setStrokeWidth(strockWidth);
    mPaint.setColor(myPaintColor);
    //for overlapping
   // mPaint.setXfermode(new AvoidXfermode(myPaintColor, 90, AvoidXfermode.Mode.AVOID));
    canvas.drawPath(mPath, mPaint);
}

【问题讨论】:

    标签: android android-canvas


    【解决方案1】:

    如果您能发布您拥有的确切代码,那就太好了。但从你所说的来看,要实现你正在寻找的东西,你需要有你的 onDraw() 方法,如下所示:

        @Override
        protected void onDraw(Canvas canvas) {
            // some code
            for (Path p : paths){
                canvas.drawPath(p, mPaint);
            }
            // some code
        }
    

    pathsPath 对象的List。因此,每次绘制新路径时,只需将其添加到此列表中即可。一旦你按下 undo 按钮,从列表中删除最后一项并调用invalidate()。这样,每按一次undo,绘制的路径数就会减少1。

    【讨论】:

    • 我知道这个逻辑,我分享我的on draw方法,由于某些原因我稍微更新了它,
    • 它应该可以工作。你说当你点击undo时整个画布都被清除了。只需在onDraw() 中添加Log,即可查看for 中的内容是否在undo 之后执行。
    • 你怎么看?清除 on draw shold 再次运行
    猜你喜欢
    • 2017-02-09
    • 2016-02-28
    • 1970-01-01
    • 2012-06-24
    • 2016-06-11
    • 2014-12-21
    • 2017-07-19
    • 2011-04-26
    • 2011-12-13
    相关资源
    最近更新 更多