Как реализовать ластик для приложения для рисования в Android - PullRequest
1 голос
/ 13 февраля 2012

Я весь вечер искал способ реализовать функцию ластика для моего приложения для рисования. Самый распространенный ответ - просто закрасить фоновый цвет или изображение, но это решение не будет работать для моего приложения, потому что я реализую несколько слоев (стиль Gimp / Photoshop).

Пользователь должен иметь возможность нарисовать линию с помощью инструментов кисти, предоставленных в любом количестве слоев (метод onDraw моего DrawingView рисует layer0 ... layerX друг над другом). Затем, если они выберут инструмент «Ластик», он должен сделать прозрачной любую область текущего слоя, по которой он будет проходить.

Я не могу найти подходящий встроенный класс / функцию и не уверен, как написать сам. Я пытался сделать что-то вроде

Paint paint = new Paint();
paint.setAlpha(0);

, а затем использовать этот объект Paint для рисования, но при этом рисуется только «невидимая» линия.

Я также пытался использовать

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));

но это, казалось, рисовало как обычно и без эффекта. Я, вероятно, использую его неправильно, но в документации Android нет четкого описания того, что он делает. Мне довелось увидеть это в некоторых примерах об изменении растровых изображений.

Я могу предоставить код по мере необходимости, я просто не уверен, что будет полезно для решения моей проблемы. Направление в правильном направлении было бы самой большой помощью, так как я не добился успеха с Google.

Ответы [ 2 ]

2 голосов
/ 09 ноября 2013

Вы можете найти реализацию функции ластика, создать новый холст, функцию кисти и функцию сохранения, по этой ссылке:

создать интерфейс рисования Android

это естьочень хороший учебник для создания приложения для рисования на Android с помощью события движения.

2 голосов
/ 13 февраля 2012

См. Эту демонстрацию: FingerPaint.java

Вы узнаете, как реализовать ластик для Paint.

Наслаждайтесь.:)

...