Рисование поверх ImageView - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь нарисовать изображение, которое позже сохраню вместе с рисунками. В моем XML только ImageView, и я попытался переписать onDraw. Это только сделало де Canvas работ, но без изображения.

public class Body1 extends View {

    public LayoutParams params;
    private Path path = new Path();
    private Paint brush = new Paint();


    public Body1(Context context) {
        super(context);

        brush.setAntiAlias(true);
        brush.setColor(Color.MAGENTA);
        brush.setStyle(Paint.Style.STROKE);
        brush.setStrokeJoin(Paint.Join.ROUND);
        brush.setStrokeWidth(8f);

        params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);


    }

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

        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                path.moveTo(pointX, pointY);
                return true;
            case MotionEvent.ACTION_MOVE:
                path.lineTo(pointX, pointY);
                break;
            default:
                return false;
        }
        postInvalidate();
        return false;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawPath(path, brush);
    }
}

1 Ответ

0 голосов
/ 15 мая 2019

ОК, вы на правильном пути.Вам не хватает недействительных вызовов, в результате чего ОС вызывает OnDraw представления.

Вызов недействителен каждый раз, когда вы хотите обновить представление.Но обратите внимание, что у вашего класса есть только один объект пути, и поэтому он будет рисовать только последний сегмент.

Если я не ошибаюсь, вы должны содержать ArrayList из Path объектов.В onDraw вы должны зациклить их и нарисовать их всех один за другим.

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