Processing:Справочник языка Processing/createGraphics()

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


Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Cat poo.png Черновик


createGraphics() [1]

Обозначение

createGraphics()

Описание

Создает и возвращает новый объект PGraphics. Используйте этот класс, если вам необходимо нарисовать что-то в графический буфер, находящийся за пределами экрана. Первые два параметра задают ширину и высоту объекта (в пикселях). В третьем (опциональном) параметре задается визуализатор – P2D, P3D или PDF. Если третий параметр не задан, метод воспользуется визуализатором по умолчанию. Визуализатору PDF также требуется параметр filename.

Важно, чтобы визуализатор в createGraphics() соответствовал главному визуализатору, заданному в size(). К примеру, если в size() задан визуализатор P2D или P3D, то в createGraphics() можно использовать только их. В отличие от Processing 1.0, визуализаторы P2D и P3D используют для рисования OpenGL, а когда вы используете визуализатор OpenGL, необходимо, чтобы главная поверхность изображения тоже была на базе OpenGL. Если в методе size() в качестве визуализатора используются P2D или P3D, то их можно использовать и в createGraphics(). Если в size() используется визуализатор по умолчанию, то в createGraphics() может быть использован только визуализатор по умолчанию или PDF.

Важно помнить, что все рисующие функции должны вызываться внутри блока из методов beginDraw() и endDraw(). Это касается и всех методов, влияющих на изображение – вроде smooth() или colorMode().

Метод createGraphics() почти во всех случаях нельзя использовать внутри draw(), т.к. это расходует лишнюю память и время, используемые на рисование графики. Одноразовое или случайное использование createGraphics() внутри draw() – это приемлемо, но код, который вызывает createGraphics() 60 раз в секунду быстро израсходует память, из-за чего ваш скетч попросту зависнет.

В отличие от главной поверхности изображения, которая полностью непрозрачна, изображения, создаваемые при помощи createGraphics(), могут быть прозрачными. Это значит, что вы можете не только нарисовать внутри них какую-то графику, но и задать альфа-канал. Информация о прозрачности будет сохранена и при записи графического объекта в формат PNG или TGA при помощи метода save().

Синтаксис

createGraphics(w, h)
createGraphics(w, h, renderer)
createGraphics(w, h, renderer, filename)

Параметры

w         ширина изображения (в пикселях). Тип данных  int
h         высота изображения (в пикселях). Тип данных  int
renderer  используемый визуализатор (P2D, P3D или PDF). Тип данных  String
filename  название файла (может быть абсолютным или относительным путем). Тип данных  String

Возвращаемое значение

Тип данных  объект PGraphics.

Пример

PGraphics pg;

void setup() {
  size(200, 200);
  pg = createGraphics(100, 100);
}

void draw() {
  pg.beginDraw();
  pg.background(102);
  pg.stroke(255);
  pg.line(pg.width*0.5, pg.height*0.5, mouseX, mouseY);
  pg.endDraw();
  image(pg, 50, 50); 
}

См.также

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