gpt4 book ai didi

android - 如何清除 Android 中绘制的 Canvas 的内容?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:21 29 4
gpt4 key购买 nike

我想在屏幕上绘制某些东西后清除 Canvas 的内容。

如何完全清除屏幕?它上面的任何代码 fragment 都会有所帮助。

谢谢。

这是我的代码:

public class Panel extends SurfaceView implements SurfaceHolder.Callback {

private ViewThread mThread;
private ArrayList<Element> mElements = new ArrayList<Element>();


public Panel(Context context, AttributeSet attrs) {
super(context, attrs);
this.setBackgroundColor(Color.TRANSPARENT);
this.setZOrderOnTop(true); //necessary
getHolder().setFormat(PixelFormat.TRANSPARENT);
getHolder().addCallback(this);
mThread = new ViewThread(this);

}


public void doDraw(Canvas canvas) {
super.onDraw(canvas);

//canvas.drawColor(Color.TRANSPARENT);
// canvas.drawColor(Color.argb(0, 255, 255, 255));
//canvas.drawColor(Color.rgb(-1, -1, -1));
//canvas.drawARGB(0, 255, 255, 255);
synchronized (mElements) {
for (Element element : mElements) {
element.doDraw(canvas);
}
}
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// TODO Auto-generated method stub
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
if (!mThread.isAlive()) {
mThread = new ViewThread(this);
mThread.setRunning(true);
mThread.start();
}
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (mThread.isAlive()) {
mThread.setRunning(false);
}
}

@Override
public boolean onTouchEvent(MotionEvent event) {
synchronized (mElements) {
mElements.add(new Element(getResources(), (int) event.getX(), (int) event.getY()));
}
return super.onTouchEvent(event);
}

最佳答案

试试这个:

canvas.drawColor(0); //use 32bit hex like 0xffffffff for white

canvas.drawARGB(0, 0, 0, 0); //0-255 for each component

这会将 Canvas 清除为黑色。您可以使用任何您喜欢的颜色。

关于android - 如何清除 Android 中绘制的 Canvas 的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8716854/

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