【发布时间】: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);
}
【问题讨论】: