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