Что означает PorterDuff.Mode в графике Android. Что он делает?

Я хотел бы знать, что означает PorterDuff.Mode в графике Android.

Я знаю, что это режим передачи.

Я также знаю, что он имеет такие атрибуты, как DST_IN, Multiply и т.д.

Ответ 1

Вот отличная статья с иллюстрациями инженера Google:

http://ssp.impulsetrain.com/porterduff.html

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

Стандартный способ компоновки изображений по умолчанию - PorterDuff.Mode.SRC_OVER, который приравнивает к рисованию исходного изображения/цвета поверх целевого образ. Другими словами, он делает то, что вы ожидаете, и рисует исходное изображение (то, что вы рисуете) поверх целевого изображения (холста) с изображением цели, отображаемым до степени, определяемой исходным изображением alpha.

PorterDuff infographic from the article

Вы можете использовать ключ ниже, чтобы понять алгебру, которую Android-документы используют для описания других режимов (см. статью для более полного описания с аналогичными условиями).

  • Sa Источник альфа
  • Sc Цвет источника
  • Da Назначение alpha
  • Dc Цвет назначения

Где альфа - значение [0..1], а цвет заменяется один раз на канал (поэтому используйте формулу один раз для каждого из красного, зеленого и синего)

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

[<alpha-value>,<color-value>]

Где alpha-value и color-value - формулы для генерации получаемой альфа-канала и каждой цветной шали соответственно.