Как создать эффект водной ряби, используя RadialGradient в качестве шейдера при рисовании на холсте? - PullRequest
0 голосов
/ 25 мая 2019

Я пытаюсь создать эффект водной ряби на плавающем виджете, используя RadialGradient.Я рисую круг на холсте, так что все решения с волновым эффектом на изображениях здесь не применимы.

То, что я до сих пор делал, - это создание нового RadialGradient в таймере и установка шейдера краски в этот RadialGradient.Тогда я бы перерисовал.Я попытался изменить радиус и цвета, включая вариант, где можно использовать целый массив цветов, а не только два.Но ничего из того, что я попробовал, не дало ожидаемых результатов.Кто-нибудь сделал что-то подобное, или знает, есть ли обходной путь?

Внутри моего таймера у меня есть следующее:

shader = new RadialGradient(max_diameter>>1, max_diameter>>1, 10+counter++, colorStart, colorStop, Shader.TileMode.MIRROR);
counter %= 10;
paint.setShader(shader);

Это не работает, так как радиусы суммируются вграницы.Я попробовал вариант с массивом цветов, но ничего полезного не получил.

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

...