Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Processing:Примеры/Линейный градиент

Материал из Онлайн справочника
Перейти к: навигация, поиск


Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Описание[1]

Этот скетч демонстрирует использование функции lerpColor() для интерполяции между двумя цветами.

Пример

  1. // константы:
  2. int Y_AXIS = 1;
  3. int X_AXIS = 2;
  4. color b1, b2, c1, c2;
  5.  
  6. void setup() {
  7.   size(640, 360);
  8.  
  9.   // задаем цвета:
  10.   b1 = color(255);
  11.   b2 = color(0);
  12.   c1 = color(204, 102, 0);
  13.   c2 = color(0, 102, 153);
  14.  
  15.   noLoop();
  16. }
  17.  
  18. void draw() {
  19.   // фоновый план:
  20.   setGradient(0, 0, width/2, height, b1, b2, X_AXIS);
  21.   setGradient(width/2, 0, width/2, height, b2, b1, X_AXIS);
  22.   // передний план:
  23.   setGradient(50, 90, 540, 80, c1, c2, Y_AXIS);
  24.   setGradient(50, 190, 540, 80, c2, c1, X_AXIS);
  25. }
  26.  
  27. void setGradient(int x, int y, float w, float h, color c1, color c2, int axis ) {
  28.  
  29.   noFill();
  30.  
  31.   if (axis == Y_AXIS) {  // градиент сверху вниз
  32.     for (int i = y; i <= y+h; i++) {
  33.       float inter = map(i, y, y+h, 0, 1);
  34.       color c = lerpColor(c1, c2, inter);
  35.       stroke(c);
  36.       line(x, i, x+w, i);
  37.     }
  38.   }  
  39.   else if (axis == X_AXIS) {  // градиент слева направо
  40.     for (int i = x; i <= x+w; i++) {
  41.       float inter = map(i, x, x+w, 0, 1);
  42.       color c = lerpColor(c1, c2, inter);
  43.       stroke(c);
  44.       line(i, y, i, y+h);
  45.     }
  46.   }
  47. }

См.также

Внешние ссылки

  1. processing.org - Simple Linear Gradient