Освой Processing играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

PGraphics

Иногда требуется что-то нарисовать заранее, прежде чем выводить на экран. Для этой цели существует объект PGraphics.


PGraphics pGraphics;
float x;
float y;

void setup()
{
  size(500, 400);
  pGraphics= createGraphics(64, 64, JAVA2D);
  background(255);
  imageMode(CENTER);
  x = 0;
  y = 0;
} 

void draw()
{
  pGraphics.beginDraw();
  pGraphics.background(255, 10, 10, 10);
  pGraphics.smooth();

  for (int i= 0; i < 8; i++) {
    pGraphics.stroke(random(255), 0, 0);
    pGraphics.line(random(pGraphics.width), 
      random(pGraphics.height), 
      random(pGraphics.width), 
      random(pGraphics.height));
  } 

  pGraphics.endDraw();
  image(pGraphics, x, y);
  x += random(4, 16);

  if ( x > width) {
    x = 0;
    y += random(32, 64);
    if ( y > height ) {
      y = 0;
      fill(255, 32);
      noStroke();
      rect(0, 0, width, height);
    }
  }
} 
void mousePressed()
{
  if (random(100) < 50) {
    background(0);
  } else {
    background(255);
  }
}

В коде мы объявили объект класса PGraphics и инициализировали его в методе setup(). В методе draw() рисуем несколько линий в объекте PGraphics. Затем объект выводится на экран с помощью функции image(). Затем добавлен код для анимации, меняя значения x и y.

В функции mousePressed() делаем очистку экрана. Цвет фона станет белым или чёрным с равной вероятностью.

Функция createGraphics() создаёт контекст, на котором вы будете рисовать. Первые два параметра - это ширина и высота изображений, третий - рендерер. Для двухмерных линий подойдёт рендерер P2D. Начало рисования объявляется через beginDraw(). Завершение рисования происходит через endDraw(). Между ними находится сам код для рисования.

Данный объект полезен при большом количестве выводимых объектов. Например, вы можете создать много текста в объектах PGraphics, а затем вывести текст на экрана. Без применения такого объекта скетч может тормозить.

На главную страницу Processing

Реклама