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

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

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


createShape() [1]

Обозначение

createShape()

Описание

Используется для того, чтобы задать новую фигуру. Когда фигура будет задана, ее можно будет нарисовать с помощью метода shape(). Метод createShape() можно использовать, во-первых, для того, чтобы задать примитивные фигуры. В первом параметре можно использовать следующие значения – ELLIPSE, RECT, ARC, TRIANGLE, SPHERE, BOX, QUAD или LINE. Параметры для каждой из этих фигур такие же, как и у соответствующих методов – ellipse(), rect(), arc(), triangle(), sphere(), box(), quad() и line(). О том, как это работает, смотрите в примере 1 ниже.

Кроме того, при помощи метода createShape() можно задать и уникальные фигуры. В этом случае параметры не нужны, но понадобятся методы beginShape() и endShape(), с помощью которых можно напрямую задать геометрию и атрибуты будущей фигуры. Более подробно смотрите в примере 2 ниже, а также в статье для метода beginShape(), где подробно объясняется, что можно сделать с ее помощью.

Метод createShape() также можно использовать для создания сложной фигуры, состоящей из других фигур. Это называется «группой», и для ее создания в первом параметре метода нужно указать GROUP. Более подробно смотрите в примере 4 ниже.

После использования createShape() можно задать характеристики цвета и контура фигуры – при помощи методов setFill() и setStroke(), как показано в примерах выше. Полный список методов и полей для класса PShape можно найти тут.

Синтаксис

createShape()
createShape(type)
createShape(kind, p)

Параметры

kind  тип фигуры. Возможные варианты  POINT, LINE, TRIANGLE, QUAD, RECT, ELLIPSE, ARC, BOX, SPHERE
p     параметры, соответствующие типу фигуры. Тип данных  float[]

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

Объект PShape

Пример

№1

PShape square;  // объект PShape 

void setup() {
  size(100, 100);
  // создание объекта PShape в виде квадрата; 
  // числовые аргументы такие же, как и для метода rect():
  square = createShape(RECT, 0, 0, 50, 50);
  square.setFill(color(0, 0, 255));
  square.setStroke(false);
}

void draw() {
  shape(square, 25, 25);
}

№2

PShape s;  // объект PShape

void setup() {
  size(100, 100);
  // создание уникального объекта PShape в виде квадрата
  // путем указания нескольких вершин:
  s = createShape();
  s.beginShape();
  s.fill(0, 0, 255);
  s.noStroke();
  s.vertex(0, 0);
  s.vertex(0, 50);
  s.vertex(50, 50);
  s.vertex(50, 0);
  s.endShape(CLOSE);
}

void draw() {
  shape(s, 25, 25);
}

№3

PShape s;

void setup() {
  size(100, 100, P2D);
  s = createShape();
  s.beginShape(TRIANGLE_STRIP);
  s.vertex(30, 75);
  s.vertex(40, 20);
  s.vertex(50, 75);
  s.vertex(60, 20);
  s.vertex(70, 75);
  s.vertex(80, 20);
  s.vertex(90, 75);
  s.endShape();
}

void draw() {
  shape(s, 0, 0);
}

№4

PShape alien, head, body;

void setup() {
  size(100, 100);

  // создание группы фигур:
  alien = createShape(GROUP);

  // делаем две фигуры:
  ellipseMode(CORNER);
  head = createShape(ELLIPSE, -25, 0, 50, 50);
  head.setFill(color(255));
  body = createShape(RECT, -25, 45, 50, 40);
  body.setFill(color(0));

  // добавляем две "дочерних" фигуры к родительской группе:
  alien.addChild(body);
  alien.addChild(head);
}

void draw() {
  background(204);
  translate(50, 15);
  shape(alien);  //  рисуем группу
}

См.также

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