В Paper.js цвет задается объектом Color, который является универсальным инструментом для определения оттенков, прозрачности и градиентов. Цвет может быть представлен в различных цветовых пространствах: RGB, HSB (Hue, Saturation, Brightness), градациях серого или через строки CSS.
// Через RGB
let redColor = new Color(1, 0, 0); // Красный
// Через HSB
let hsbColor = new Color({ hue: 120, saturation: 0.5, brightness: 0.7 });
// Через CSS строку
let cssColor = new Color('#00ff00'); // Зеленый
// Через градации серого
let grayColor = new Color(0.5); // Полутон серого
Ключевой момент: значения RGB и HSB в Paper.js нормализованы в диапазоне от 0 до 1. Для CSS-цветов используется привычная шестнадцатеричная или словесная запись.
Цвет RGB определяется тремя компонентами: красной, зелёной и синей. В
Paper.js эти компоненты имеют тип Number от 0 до 1:
let colorRGB = new Color(0.2, 0.6, 0.8); // Синий оттенок
Особенности:
let semiTransparent = new Color(0.2, 0.6, 0.8, 0.5);
colorRGB.red = 0.9;
colorRGB.green = 0.1;
HSB позволяет работать с цветом на основе его тон, насыщенность и яркость:
let colorHSB = new Color({ hue: 200, saturation: 0.7, brightness: 0.8 });
Примечания:
Gray-scale цвета используют один числовой параметр:
let gray = new Color(0.3); // Темно-серый
let grayAlpha = new Color(0.3, 0.5); // Полупрозрачный серый
Прозрачность задается как четвертая компонента в RGB или HSB или вторым аргументом в градациях серого:
let transparentRed = new Color(1, 0, 0, 0.4);
transparentRed.alpha = 0.8;
Paper.js поддерживает LinearGradient, RadialGradient и Color смешение.
let from = new Point(0, 0);
let to = new Point(100, 100);
let gradient = new Gradient([new Color(1,0,0), new Color(0,0,1)]);
let linearGradient = new Color(gradient, from, to);
let radialGradient = new Color(new Gradient([new Color(1,1,0), new Color(1,0,0)]), new Point(50,50), new Point(50,100));
Смешение цветов
let blue = new Color(0,0,1);
let yellow = new Color(1,1,0);
let mixed = blue.mix(yellow, 0.5); // Результат: зеленый
Изменение компонентов HSB
let color = new Color({ hue: 120, saturation: 0.5, brightness: 0.7 });
color.hue += 30; // Изменение тона
color.saturation *= 0.8; // Изменение насыщенности
color.brightness = 1; // Увеличение яркости
Копирование цвета
let copyColor = color.clone();
Цвета применяются к Fill (заливка) и Stroke (обводка) объектов:
let circle = new Path.Circle(new Point(50,50), 40);
circle.fillColor = new Color(0, 1, 0); // Зеленая заливка
circle.strokeColor = new Color(0, 0, 0); // Черная обводка
circle.strokeWidth = 3;
circle.fillColor = linearGradient;
Цветовые возможности Paper.js позволяют строить сложные визуальные эффекты с минимальными усилиями и дают полный контроль над визуальной частью графики.