Я только запускаю с разработки Android, и я приезжаю из мира JavaScript/HTML, таким образом, я в настоящее время исследую возможности SDK Android.
Операции составного объекта поддержек холста HTML 5 (См. здесь).
Действительно ли это возможно в Холсте Android? Я просканировал API класса Холста, но ничто не мог найти полезным. Мне нужна, по крайней мере, составная операция "источник - в" или (если это не возможно), "источник - на".
Композиция обрабатывается рисованием на холсте
с помощью Paint
, который использует PorterDuffXfermode
.
Paint p=new Paint();
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN));
canvas.drawBitmap(bitmap, 0, 0, p);
Дополнительную информацию см. в здесь. Мне также удалось переопределить onPaint
, чтобы мы могли применять эту композицию к элементам, которые рисуют сами себя.
Я не рассматривал такие операции раньше, но я думаю, что есть способ сделать их, используя форму Rect. Можно определить прямоугольники, чтобы выделить, какие области должны быть нарисованы на холсте, а какие извлечены из исходного изображения, а класс Rect
имеет некоторые встроенные функции сравнения. Например, для имитации исходного кода можно использовать setIntersect(Rect boundingBoxOfSource, Rect boundingBoxOfDestination)
, чтобы новый прямоугольник был иметь только пересекающуюся область двух изображений. Затем вы можете использовать этот прямоугольник в качестве аргумента в одной из команд рисования Canvas, указывая ему, чтобы он брал только пиксели из исходного изображения, которые находятся внутри этого прямоугольника. Затем вы управляете чертежом по оси Z в том порядке, в котором выполняются команды рисования.
Нашел сам. PorterDuffXfermode реализует все эти составные режимы.