[英]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.