Прямоугольник — один из базовых примитивов в Paper.js, представленный
объектом Path.Rectangle. Он используется для построения
интерфейсных элементов, фонов, масок, областей выделения и более сложных
фигур.
В Paper.js прямоугольник создаётся через конструктор
Path.Rectangle. Существует несколько способов задания его
параметров:
var rect = new Path.Rectangle({
point: [50, 50],
size: [200, 100],
fillColor: 'blue'
});
point — координаты верхнего левого углаsize — ширина и высотаvar rect = new Path.Rectangle({
from: [50, 50],
to: [250, 150],
strokeColor: 'black'
});
from — первая точка (обычно верхний левый угол)to — противоположная точка (нижний правый угол)var rectangle = new Rectangle(new Point(50, 50), new Size(200, 100));
var path = new Path.Rectangle(rectangle);
Для создания прямоугольников со скруглёнными углами используется
параметр radius.
var rect = new Path.Rectangle({
point: [50, 50],
size: [200, 100],
radius: 20,
fillColor: 'green'
});
Также можно задавать разные радиусы по осям:
radius: [30, 10]
Прямоугольник в Paper.js — это частный случай Path,
поэтому он наследует все свойства пути.
position — центр объектаbounds — границы (включая обводку)strokeBounds — границы с учётом толщины линииfillColor — цвет заливкиstrokeColor — цвет обводкиstrokeWidth — толщина линииПример:
rect.strokeColor = 'black';
rect.strokeWidth = 5;
Размеры можно менять через bounds или напрямую
трансформациями.
rect.bounds.width = 300;
rect.bounds.height = 150;
rect.scale(1.5);
Перемещение осуществляется через изменение позиции:
rect.position = [300, 200];
Или сдвигом:
rect.translate([50, 20]);
rect.rotate(45);
Вращение происходит относительно центра, если не указана другая точка:
rect.rotate(45, new Point(0, 0));
Прямоугольник состоит из четырёх сегментов:
console.log(rect.segments);
Каждый сегмент содержит:
pointhandleInhandleOutЭто позволяет модифицировать форму:
rect.segments[0].point.x += 20;
После создания прямоугольник можно деформировать:
rect.segments[1].point.y += 50;
Так он перестаёт быть строго прямоугольником и становится произвольным путём.
var hit = rect.contains(new Point(100, 100));
Возвращает true, если точка внутри фигуры.
Прямоугольники активно используются в булевой геометрии:
var rect1 = new Path.Rectangle([50, 50], [100, 100]);
var rect2 = new Path.Rectangle([100, 100], [150, 150]);
var united = rect1.unite(rect2);
Доступные операции:
unite — объединениеintersect — пересечениеsubtract — вычитаниеexclude — исключающее ИЛИvar copy = rect.clone();
copy.position.x += 100;
Клон полностью независим от оригинала.
rect.remove();
Удаляет объект со сцены.
Прямоугольники можно объединять в группы:
var group = new Group([rect1, rect2]);
Группа позволяет применять трансформации ко всем объектам сразу.
var mask = new Path.Rectangle({
point: [50, 50],
size: [200, 100]
});
group.clipped = true;
group.addChild(mask);
Прямоугольник ограничивает видимую область содержимого группы.
function onFrame(event) {
rect.rotate(1);
}
Каждый кадр изменяет состояние объекта.
Symbol и PlacedSymbolbounds автоматически пересчитывается при
измененияхpoint (это не центр, а
угол)bounds без учёта позицииscale без контроля центра
трансформацииrect.radius = 0;
function onFrame(event) {
rect.radius += 0.5;
}
rect.onCl ick = function() {
this.fillColor = 'red';
};
for (var x = 0; x < 5; x++) {
for (var y = 0; y < 5; y++) {
new Path.Rectangle({
point: [x * 50, y * 50],
size: [40, 40],
fillColor: 'black'
});
}
}
Формирование регулярных структур на основе прямоугольников лежит в основе многих графических интерфейсов и визуализаций.