Страница 1 из 1

Урок 153. Рисование. ColorFilter, ColorMatrix

Добавлено: 28 июл 2014, 03:00
damager82
В этом уроке:
- меняем цвет кисти с помощью ColorFilter


Click here to read this article!

Re: Урок 153. Рисование. ColorFilter, ColorMatrix

Добавлено: 04 мар 2016, 00:15
valrti ptrovichh
Новые значения равны исходным. Т.е. матрица настроена так, что RGBA значения любого цвета вообще не изменятся. Убедимся в этом. Запускаем приложение
Результат:
Тут явно что-то не так. Появляется черный контур
Изображение
В чем может быть дело и как это исправить ?

Re: Урок 153. Рисование. ColorFilter, ColorMatrix

Добавлено: 19 фев 2017, 11:14
Павел Кутузов
Эффект от setRotate немного похож на этот: https://s-media-cache-ak0.pinimg.com/or ... 179c8a.jpg
Где "комната" это RGB-куб.
Только у нас зеркальный шар (шар-стробоскоп) должен быть цилиндром очень малого диаметра и стоять в углу (на цвета также не обращайте внимание они тут меняются в произвольном порядке).

В теле метода setRotate() реализуется этот процесс:

https://msdn.microsoft.com/ru-ru/library/9ya02xa6.aspx

Я так подозреваю что более-менее рабочий угол от -90 до 90 градусов.

При всех остальных углах преобразованный в пикселе цвет будет проекцией исходного цвета
на соответствующую плоскость, образованную базовой осью и осью цвета, к которому мы сдвигаем цвет точки.
И при этом он ещё будет подтянут синусом/косинусом (которые никогда не бывают больше 1)
к базовой оси.

Например, если принять за базовую ось ось синих цветов см.:
https://i-msdn.sec.s-msft.com/ru-ru/lib ... dd4f6.jpeg
то при изменении угла точка будет пробегать по контуру указанного здесь сектора.
При этом точки, близкие к плоскости синий-зеленый, уже при малых углах попадут на эту плоскость и далее будут только стягиваться к оси синих.
Точки же, находящиеся около плоскости синий-красный, будут двигаться по окружности к плоскости синий-зеленый, а далее опять же попадают на эту плоскость и стягиваются к оси синих.
Когда угол становится большим, чем угол, требующийся для попадания точки на ось синих(это 180+/-90 градусов для разных точек), то точка начинает отдаляться от оси синих уже по плоскости синий-красный, потом переходит на дугу нашего сектора и возвращается в исходное состояние при 360 градусах.

Если давать отрицательный угол, то всё описанное выше движение будет происходить в обратную сторону.

Вся картинка становится почти синей при 180 градусах, потому что все остальные цвета "стянуты" к оси синих с разных сторон (на плоскостях синий-зеленый и синий-красный) и при этом имеют малые составляющие других цветов.