В Paper.js объектам графики можно присваивать цветовые
свойства, которые влияют на внешний вид фигуры. Основные
параметры: fillColor и strokeColor.
let circle = new Path.Circle(new Point(150, 150), 50);
circle.fillColor = 'red'; // заливка красным цветом
circle.strokeColor = 'black'; // контур черного цвета
circle.strokeWidth = 5; // толщина контура
Особенности:
'red',
'#ff0000'), объекта Color
(new Color(1, 0, 0)), или градиента.fillColor.alpha или strokeColor.alpha:circle.fillColor.alpha = 0.5; // полупрозрачная заливка
Для детальной настройки линий применяются следующие свойства:
strokeWidth – толщина линии.strokeCap – форма окончания линии
('round', 'square', 'butt').strokeJoin – соединение сегментов линии
('round', 'bevel', 'miter').dashArray – массив для создания пунктирных линий:let line = new Path.Line([50, 50], [250, 50]);
line.strokeColor = 'blue';
line.strokeWidth = 4;
line.dashArray = [10, 5]; // 10px линия, 5px пропуск
Paper.js позволяет создавать линейные и радиальные градиенты для более сложных визуальных эффектов.
Линейный градиент:
let rectangle = new Path.Rectangle([50, 100], [200, 100]);
rectangle.fillColor = {
gradient: {
stops: ['red', 'yellow', 'green'],
radial: false
},
origin: [50, 100],
destination: [250, 200]
};
Радиальный градиент:
rectangle.fillColor = {
gradient: {
stops: ['white', 'blue'],
radial: true
},
origin: [150, 150],
destination: [150, 200]
};
Особенности:
stops определяет цвета перехода.origin и destination задают направление
градиента.origin – центр, а
destination – радиус.Paper.js поддерживает наследование стиля при
группировке объектов с помощью Group.
let circle1 = new Path.Circle(new Point(100, 100), 30);
let circle2 = new Path.Circle(new Point(200, 100), 30);
let group = new Group([circle1, circle2]);
group.fillColor = 'orange'; // применяется ко всем элементам группы
Особенности:
group.children для перебора всех
объектов и изменения их стилей программно:group.children.forEach(item => item.strokeColor = 'black');
Для сохранения стиля объекта используется метод
item.style. Это объект, содержащий все параметры
визуального оформления:
let style = circle.style.clone(); // сохраняем стиль
let circle2 = circle.clone();
circle2.position.x += 100;
circle2.style = style; // применяем сохраненный стиль
Ключевые моменты:
style.clone() создаёт независимую копию, что позволяет
модифицировать новый объект, не влияя на исходный.fillColor,
strokeColor, strokeWidth,
strokeCap, strokeJoin, dashArray,
shadowColor, shadowBlur.Для объектов PointText также применяются стили, которые
хранятся в item.style.
let text = new PointText(new Point(150, 150));
text.content = 'Paper.js';
text.fillColor = 'purple';
text.fontSize = 24;
text.fontFamily = 'Arial';
text.fontWeight = 'bold';
Особенности:
fillColor – основной цвет текста.fontSize, fontFamily,
fontWeight – управляют шрифтом и толщиной.text.style.clone().Paper.js позволяет сохранять наборы стилей в объекте и применять их к разным объектам без повторного задания каждого свойства:
let styleSet = {
fillColor: 'skyblue',
strokeColor: 'navy',
strokeWidth: 3,
shadowColor: 'gray',
shadowBlur: 10
};
let rect = new Path.Rectangle([50, 50], [100, 50]);
Object.assign(rect.style, styleSet);
let ellipse = new Path.Ellipse({
point: [200, 50],
size: [100, 50]
});
Object.assign(ellipse.style, styleSet);
Преимущества подхода:
Система стилей Paper.js обеспечивает:
Эти инструменты позволяют создавать визуально богатые и гибкие графические элементы, управляя стилями как на уровне отдельных объектов, так и целых групп.