gpt4 book ai didi

java - 画完 Canvas 后如何使 Canvas 变白?

转载 作者:行者123 更新时间:2023-12-01 17:50:35 33 4
gpt4 key购买 nike

我正在 Canvas 上正确绘图并将其保存为位图。但是,我想通过单击按钮将 Canvas 重置为白色。

这是我的代码:

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()函数。但似乎“cc”在 onDraw() 内部未被识别,或者它内部始终具有相同的值。我尝试了 path.reset() 但没有结果。

调用clear()不会返回任何错误。

最佳答案

似乎您希望在调用 clear() 方法时也清除 path ,所以这样做,然后使用 路径为空以清除 Canvas 。

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 字段。

关于java - 画完 Canvas 后如何使 Canvas 变白?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60802532/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com