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

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

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


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

Контакты:

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


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


Описание[1]

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

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

Пример

  1. PImage img;
  2. int direction = 1;
  3. float signal;
  4.  
  5. void setup() {
  6.   size(640, 360);
  7.   noFill();
  8.   stroke(255);
  9.   frameRate(30);
  10.   img = loadImage("sea.jpg");
  11. }
  12.  
  13. void draw() {
  14.   if (signal > img.width*img.height-1 || signal < 0) {
  15.     direction = direction * -1;
  16.   }
  17.  
  18.   if (mousePressed) {
  19.     int mx = constrain(mouseX, 0, img.width-1);
  20.     int my = constrain(mouseY, 0, img.height-1);
  21.     signal = my*img.width + mx;
  22.   } else {
  23.     signal += 0.33*direction;
  24.   }
  25.  
  26.   int sx = int(signal) % img.width;
  27.   int sy = int(signal) / img.width;
  28.  
  29.   if (keyPressed) {
  30.     set(0, 0, img);  // fast way to draw an image
  31.     point(sx, sy);
  32.     rect(sx - 5, sy - 5, 10, 10);
  33.   } else {
  34.     color c = img.get(sx, sy);
  35.     background(c);
  36.   }
  37. }

См.также

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

  1. processing.org - Pixel Array