Обработка - смешивание цветов заливки движением мыши - PullRequest
1 голос
/ 19 апреля 2020

Я видел это видео на днях и пытаюсь повторить, как это делается.

Это довольно просто, но я застрял в том, как сделать нарисованные фигуры более размытыми и плавный градиент по ним, например:

https://www.instagram.com/p/B_DjZCro2qm/

Градиентная справка

Кто-нибудь имеет представление о Как смешать цвета круга, чтобы они выглядели как градиент?

PImage img;
int value = 0;
int size = 50;

void setup() {
  size(640, 800);
  frameRate(60);
  img = loadImage("blue.jpg");
  img.resize(width, height);
  background(img);
}

void draw() {
  //get the color at the mouse position
  color c = img.get(mouseX, mouseY);

  //change the fill to that color
  fill(c);
  noStroke();

  //draw a circle with that color when mouse pressed
  if(mousePressed) circle(mouseX, mouseY, size);;
}

1 Ответ

2 голосов
/ 19 апреля 2020

Как указал @laancelot, мне нужно было получить средний цвет! Спасибо

color getAverageColor(PImage img) {
  img.loadPixels();
  int r = 0, g = 0, b = 0;
  for (int i=0; i<img.pixels.length; i++) {
    color c = img.pixels[i];
    r += c>>16&0xFF;
    g += c>>8&0xFF;
    b += c&0xFF;
  }
  r /= img.pixels.length;
  g /= img.pixels.length;
  b /= img.pixels.length;
 
  return color(r, g, b);
}
...