簡體   English   中英

繪圖后如何使畫布變白?

[英]How to make a canvas white after drawing?

我正在畫布上正確繪圖並將其保存到位圖。 但是,我想通過單擊按鈕將畫布重置為白色。

這是我的代碼:

public class Canvas extends View {
    Paint paint;
    Path path;
    boolean cc = false;

public Canvas(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    paint = new Paint();
    path = new Path();
    paint.setAntiAlias(true);
    paint.setColor(Color.RED);
    paint.setStrokeJoin(Paint.Join.ROUND);
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeWidth(5f);

}

@Override
protected void onDraw(android.graphics.Canvas canvas) {
    super.onDraw(canvas);
    if (!cc) {
        canvas.drawPath(path, paint);
    }
    else {
        canvas.drawColor(Color.WHITE);
        cc = false;
    }
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    float xPos = event.getX();
    float yPos = event.getY();
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            path.moveTo(xPos, yPos);
            return true;
        case MotionEvent.ACTION_MOVE:
            path.lineTo(xPos, yPos);
            break;
        case MotionEvent.ACTION_UP:
            break;
        default:
            return false;
    }
    invalidate();
    return true;
}


public void clear() {
    cc = true;
    invalidate();
}

我的 clear() 函數將 cc 設置為“true”,然后 invalidate() 調用 onDraw() 函數。 但似乎在 onDraw() 內部無法識別“cc”,或者它內部始終具有相同的值。 我嘗試了 path.reset() 沒有結果。

調用 clear() 不會返回任何錯誤。

要清除所有畫布,請使用以下命令:

     Paint transparent = new Paint();
     transparent.setAlpha(0);

更新:

在您的按鈕 onclick() 中添加這一行:

canvas.drawColor(Color.WHITE);

並將其從 draw 函數中刪除。

似乎您希望在調用clear()方法時也清除path ,所以這樣做,然后使用path為空的事實來清除畫布。

public void clear() {
    path.reset();
    invalidate();
}

@Override
protected void onDraw(android.graphics.Canvas canvas) {
    super.onDraw(canvas);
    if (path.isEmpty()) {
        canvas.drawColor(Color.WHITE);
    } else {
        canvas.drawPath(path, paint);
    }
}

這完全消除了cc字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM