Я пытаюсь решить проблему с андроидом ColorFilters
. Документация очень скудная, поэтому основной метод — пробовать разные варианты.
Проблема:
Есть Bitmap. У одних пикселей альфа=255, у других альфа=0. Я пытаюсь нарисовать круг определенным цветом. Я хочу, чтобы альфа-канал не изменился в растровом изображении, но при рисовании я хочу умножить цвет на растровое изображение-альфа.
Итак, при рисовании круга я хочу, чтобы пиксели с альфа=0 не окрашивались, а пиксели с альфа=255 окрашивались в нужный мне цвет. Альфа-канал не должен меняться.
Я пытаюсь использовать класс porter-duff ColorFilter (PorterDuffColorFilter в android sdk).
слишком много режимов и нет -понятного описания на официальном сайте здесь:http://developer.android.com/reference/android/graphics/PorterDuff.Mode.html
Думаю, мне следует использовать DST_ATOP
или SRC_ATOP
, но они не работают так, как я описал.
Также в конструкторе porter-duff colorfilter есть странный параметр srcColor
.
Не могу понять, что означают "Sa" и "Sc" в формулах [Da, Sc * Da + (1 - Sa) * Dc]
. Это может быть цвет, который был передан в конструктор цветового фильтра, а также цвет, установленный с помощью "paint.setColor".
Кто-нибудь знает, как это работает?