Вопрос

Я только начинаю разработку Android и пришел из мира JavaScript/HTML, поэтому в настоящее время изучаю возможности Android SDK.

Холст HTML 5 поддерживает составные операции (см. здесь).

Возможно ли это на Android Canvas?Я просмотрел API класса Canvas, но не нашел ничего полезного.Мне нужна хотя бы составная операция «источник-вход» или (если это невозможно) «источник-поверх».

Это было полезно?

Решение

Композиция осуществляется путем рисования. Canvas с Paint который использует PorterDuffXfermode.

Paint p=new Paint();
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN));
canvas.drawBitmap(bitmap, 0, 0, p);

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

Другие советы

Раньше я не изучал подобные операции, но думаю, что есть способ выполнить их с помощью Прямой форма.Вы можете определить прямоугольники, чтобы отметить, какие области следует нарисовать на холсте, а какие исключить из исходного изображения. Rect Класс имеет некоторые встроенные функции сравнения.Например, чтобы имитировать вход источника, вы можете использовать setIntersect(Rect boundingBoxOfSource, Rect boundingBoxOfDestination) чтобы ваш новый прямоугольник имел только область пересечения двух изображений.Затем вы можете использовать этот прямоугольник в качестве аргумента в одной из команд рисования Canvas, указав ему брать только те пиксели исходного изображения, которые находятся внутри этого прямоугольника.Затем вы управляете рисованием по оси Z в зависимости от порядка выполнения команд рисования.

Нашел сам.PorterDuffXfermode реализует все эти составные режимы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top