как мне очистить холст с помощью приведенного ниже кода? - PullRequest
0 голосов
/ 07 декабря 2011

Это код моей программы:

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;
}



}

Ответы [ 2 ]

0 голосов
/ 13 февраля 2013

Попробуйте:

canvas.drawColor(0, Mode.CLEAR);
0 голосов
/ 07 декабря 2011

вызов недействительным (); в конце функции onDraw она будет продолжать вызывать onDraw, после этого сделайте проверку вроде:

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

Или перейдите по этой ссылке: Как очистить краску для пальцев?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...