Processing:Примеры/Массив пикселей

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

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


Описание[1]

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

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

Пример

PImage img;
int direction = 1;
float signal;

void setup() {
  size(640, 360);
  noFill();
  stroke(255);
  frameRate(30);
  img = loadImage("sea.jpg");
}

void draw() {
  if (signal > img.width*img.height-1 || signal < 0) { 
    direction = direction * -1; 
  }

  if (mousePressed) {
    int mx = constrain(mouseX, 0, img.width-1);
    int my = constrain(mouseY, 0, img.height-1);
    signal = my*img.width + mx;
  } else {
    signal += 0.33*direction;
  }

  int sx = int(signal) % img.width;
  int sy = int(signal) / img.width;

  if (keyPressed) {
    set(0, 0, img);  // fast way to draw an image
    point(sx, sy);
    rect(sx - 5, sy - 5, 10, 10);
  } else {
    color c = img.get(sx, sy);
    background(c);
  }
}

См.также

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