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

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

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


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

Контакты:

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


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


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

  1. PShape square;  // объект PShape
  2.  
  3. void setup() {
  4.   size(100, 100);
  5.   // создание объекта PShape в виде квадрата;
  6.   // числовые аргументы такие же, как и для метода rect():
  7.   square = createShape(RECT, 0, 0, 50, 50);
  8.   square.setFill(color(0, 0, 255));
  9.   square.setStroke(false);
  10. }
  11.  
  12. void draw() {
  13.   shape(square, 25, 25);
  14. }

№2

  1. PShape s;  // объект PShape
  2.  
  3. void setup() {
  4.   size(100, 100);
  5.   // создание уникального объекта PShape в виде квадрата
  6.   // путем указания нескольких вершин:
  7.   s = createShape();
  8.   s.beginShape();
  9.   s.fill(0, 0, 255);
  10.   s.noStroke();
  11.   s.vertex(0, 0);
  12.   s.vertex(0, 50);
  13.   s.vertex(50, 50);
  14.   s.vertex(50, 0);
  15.   s.endShape(CLOSE);
  16. }
  17.  
  18. void draw() {
  19.   shape(s, 25, 25);
  20. }

№3

  1. PShape s;
  2.  
  3. void setup() {
  4.   size(100, 100, P2D);
  5.   s = createShape();
  6.   s.beginShape(TRIANGLE_STRIP);
  7.   s.vertex(30, 75);
  8.   s.vertex(40, 20);
  9.   s.vertex(50, 75);
  10.   s.vertex(60, 20);
  11.   s.vertex(70, 75);
  12.   s.vertex(80, 20);
  13.   s.vertex(90, 75);
  14.   s.endShape();
  15. }
  16.  
  17. void draw() {
  18.   shape(s, 0, 0);
  19. }

№4

  1. PShape alien, head, body;
  2.  
  3. void setup() {
  4.   size(100, 100);
  5.  
  6.   // создание группы фигур:
  7.   alien = createShape(GROUP);
  8.  
  9.   // делаем две фигуры:
  10.   ellipseMode(CORNER);
  11.   head = createShape(ELLIPSE, -25, 0, 50, 50);
  12.   head.setFill(color(255));
  13.   body = createShape(RECT, -25, 45, 50, 40);
  14.   body.setFill(color(0));
  15.  
  16.   // добавляем две "дочерних" фигуры к родительской группе:
  17.   alien.addChild(body);
  18.   alien.addChild(head);
  19. }
  20.  
  21. void draw() {
  22.   background(204);
  23.   translate(50, 15);
  24.   shape(alien);  //  рисуем группу
  25. }

См.также

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

  1. processing.org - createShape()