Что PorterDuff.Mode означает в графике Android. Что это делает? - PullRequest
140 голосов
/ 26 ноября 2011

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

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

Я также знаю, что у него есть такие атрибуты, как DST_IN, Multiply и т. Д.

Ответы [ 2 ]

312 голосов
/ 04 сентября 2014

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

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

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

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

PorterDuff infographic from the article

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

  • Sa Источник альфа
  • Sc Источник цвета
  • Da Альфа-адресат
  • Dc Цвет назначения

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

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

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

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

4 голосов
/ 14 апреля 2013

Определяет, как составлять изображения на основе альфа-значения.Подробнее здесь http://en.wikipedia.org/wiki/Alpha_compositing

...