алгоритм для градиента .. как это вообще работает - PullRequest
0 голосов
/ 13 января 2012

Если мне дали цвет A и цвет B, как можно избежать создания градиента на холсте, который впоследствии можно преобразовать в растровое изображение.

такой, что

public Bitmap makeGradient (Цвет из, Цвет в) {}

На самом деле будет работать?

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

Ps. Есть вопрос о стековом потоке, который отвечает на это, но я все еще смущен: (

Вот оно: Генерация градиентов программно?

1 Ответ

1 голос
/ 13 января 2012

Один из способов создания радиального градиента может состоять в том, чтобы определить точку фокусировки, а также степень градиента, и когда вы генерируете изображение, вы рассчитаете расстояние между текущим пикселем и точкой фокусировки, разделите его по степени градиента и обрежьте результат до 1. Затем используйте формулу в вопросе, который вы связали.

Примерно так: псевдокод:

double d = distance(currentPixel, focusPoint); //I'll leave the implementation for you
double factor = Math.max(1.0, d/extent);

int red = (int) (firstCol.getRed() * factor + secondCol.getRed() * (1.0 - factor) );
int green= (int) firstCol.getGreen() * factor + secondCol.getGreen()* (1.0 - factor) );
int blue = (int) (firstCol.getBlue() * factor + secondCol.getBlue()* (1.0 - factor) );

Это будет означать, что чем дальше пиксель от точки фокусировки, тем больше firstCol будет способствовать этому (пиксели, находящиеся за пределами градиента, будут использовать только firstCol, поскольку factor должно быть 1.0 для тех).

...