Освой Android играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

PorterDuff.Mode

Название родительского класса PorterDuff дано в честь двух программистов Thomas Porter и Tom Duff, которые опубликовали свою работу "Compositing Digital Images" в 1984 году о смешении двух цифровых изображений. Обратите внимание, что у разработчиков были популярные на Западе кошачьи имена Том и Томас, возможно они были котами.

Эти котаны описали 12 основных операций, которые возможны при наложении двух изображений с учётом канала прозрачности. Для удобства в класс добавили другие режимы, основанные на наложении фигур без учёта альфа-канала.

При описании режимов используют два изображения, один обозначается как Source (src), второй как Destination (dst). Чтобы увидеть, как работает тот или иной режим, берут две простые фигуры разных цветов и накладывают друг на друга. Результат получается наглядным и понятным. Поняв принцип, вы можете уже взять изображение кота и применить к нему нужный эффект.

PorterDuff Source PorterDuff Destination

Перечисление PorterDuff.Mode содержит названия, которые применимы в коде. Иногда проще увидеть на картинке, чем перевести, поэтому часть текста оставил без изменений.

ADD

Добавляет исходные пиксели к целевым пикселям, общие пиксели перекрашиваются (насыщение).

ADD

CLEAR

Пиксели очищаются в 0. Ничего не отображается.

CLEAR

DARKEN

Retains the smallest component of the source and destination pixels.

DARKEN

DST

Исходные пиксели отбрасываются, оставляя целевые пиксели нетронутымы.

DST

DST_ATOP

Отбрасываются целевые пиксели, не покрытые исходными пикселями.

DST_ATOP

DST_IN

Сохраняются целевые пиксели, покрытые исходными пикселями. Всё остальное отбрасывается.

DST_IN

DST_OUT

Сохраняются целевые пиксели, не покрытые исходными пикселями.

DST_OUT

DST_OVER

Исходные пиксели рисуются за целевыми пикселями.

DST_OVER

LIGHTEN

Retains the largest component of the source and destination pixel.

LIGHTEN

MULTIPLY

Multiplies the source and destination pixels.

MULTIPLY

OVERLAY

Multiplies or screens the source and destination depending on the destination color.

OVERLAY

SCREEN

Adds the source and destination pixels, then subtracts the source pixels multiplied by the destination.

SCREEN

SRC

Отображаются только исходные пиксели.

SRC

SRC_ATOP

Отбрасываются исходные пиксели, не покрытые целевыми пикселями.

SRC_ATOP

SRC_IN

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

SRC_IN

SRC_OUT

Отображаются исходные пиксели, не закрытые целевыми пикселями.

SRC_OUT

SRC_OVER

Исходные пиксели отображаются над целевыми.

SRC_OVER

XOR

Отображаются исходные и целевые пиксели без части их пересечения.

XOR

Дополнительное чтение

PorterDuffXferMode

PorterDuff.Mode, PorterDuffXfermode

Practical Image PorterDuff Mode Usage in Android

Реклама