根据下面的代码,我将如何清除画布?

发布于 2024-12-20 01:43:03 字数 1227 浏览 4 评论 0原文

这是我的程序的代码:

SingleTouchEvent 是我的类的名称,

我厌倦了使用 canvas.onDraw 但它只改变背景。我想要的是,清理画布以进行另一幅画。

public class SingleTouchEventView extends View {
private Paint paint = new Paint();
private Path path = new Path();


public SingleTouchEventView(Context context, AttributeSet attrs) {
    super(context, attrs);

    paint.setAntiAlias(true);
    paint.setStrokeWidth(6f);
    paint.setColor(Color.GREEN);
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeJoin(Paint.Join.ROUND);


}

它只会改变屏幕的颜色。它不会删除画布以前的内容。

@Override
protected void onDraw(Canvas canvas) {


    canvas.drawColor(Color.BLACK);
    canvas.drawPath(path, paint);

}

@Override
public boolean onTouchEvent(MotionEvent event) {
    float eventX = event.getX();
    float eventY = event.getY();

    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        path.moveTo(eventX, eventY);

        return true;
    case MotionEvent.ACTION_MOVE:
        path.lineTo(eventX, eventY);
        break;
    case MotionEvent.ACTION_UP:
        // nothing to do
        break;
    default:
        return false;
    }


    // Schedules a repaint.
invalidate();


return true;
}



}

This the code of my program:

SingleTouchEvent is the name of my class

i tired using canvas.onDraw but it only change the background. What I want is, clearing the canvas for another drawing.

public class SingleTouchEventView extends View {
private Paint paint = new Paint();
private Path path = new Path();


public SingleTouchEventView(Context context, AttributeSet attrs) {
    super(context, attrs);

    paint.setAntiAlias(true);
    paint.setStrokeWidth(6f);
    paint.setColor(Color.GREEN);
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeJoin(Paint.Join.ROUND);


}

it only changes the color of screen. It does not delete the previous content of the canvas.

@Override
protected void onDraw(Canvas canvas) {


    canvas.drawColor(Color.BLACK);
    canvas.drawPath(path, paint);

}

@Override
public boolean onTouchEvent(MotionEvent event) {
    float eventX = event.getX();
    float eventY = event.getY();

    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        path.moveTo(eventX, eventY);

        return true;
    case MotionEvent.ACTION_MOVE:
        path.lineTo(eventX, eventY);
        break;
    case MotionEvent.ACTION_UP:
        // nothing to do
        break;
    default:
        return false;
    }


    // Schedules a repaint.
invalidate();


return true;
}



}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苏璃陌 2024-12-27 01:43:03

调用无效();在 onDraw 函数结束时,它将继续调用 onDraw,在此之后进行如下检查:

if(isClear)
{
    invalidate();//It'll draw nothing.
}
else
{
    do your drawing..
}

或点击此链接:
如何清除手指颜料?

call invalidate(); at the end of onDraw function, it'll keep calling onDraw, after this make a check like:

if(isClear)
{
    invalidate();//It'll draw nothing.
}
else
{
    do your drawing..
}

Or follow this link:
How to clear finger paint?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文