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

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

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


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

Контакты:

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


Ambox content.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.

Пример

  1. PGraphics pg;
  2.  
  3. void setup() {
  4.   size(200, 200);
  5.   pg = createGraphics(100, 100);
  6. }
  7.  
  8. void draw() {
  9.   pg.beginDraw();
  10.   pg.background(102);
  11.   pg.stroke(255);
  12.   pg.line(pg.width*0.5, pg.height*0.5, mouseX, mouseY);
  13.   pg.endDraw();
  14.   image(pg, 50, 50);
  15. }

См.также

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

  1. processing.org - createGraphics()