В Paper.js для отображения текста на холсте
используется класс PointText. Этот объект позволяет
размещать текст в заданной точке и управлять его внешним видом с помощью
различных свойств. Объект PointText создаётся с указанием
позиции в виде объекта Point или массива координат
[x, y]:
var text = new PointText(new Point(100, 100));
text.content = 'Привет, Paper.js!';
text.fillColor = 'black';
text.fontSize = 24;
Здесь content задаёт текст, fillColor
определяет цвет, а fontSize — размер шрифта. Позиция
Point(100, 100) указывает координаты, где начинается
отрисовка текста.
1. content Строка текста, которую необходимо отобразить. Можно обновлять динамически:
text.content = 'Новый текст';
2. fillColor Цвет текста. Принимает как строковое
представление цвета, так и объект Color:
text.fillColor = 'red';
text.fillColor = new Color(0.2, 0.5, 0.8); // RGB от 0 до 1
3. fontSize Размер шрифта в пунктах:
text.fontSize = 30;
4. fontFamily Шрифт текста:
text.fontFamily = 'Arial';
5. fontWeight Толщина шрифта. Поддерживаются
стандартные CSS-значения: 'normal', 'bold',
'100'–'900':
text.fontWeight = 'bold';
6. justification Выравнивание текста относительно
заданной позиции. Возможные значения: 'left',
'center', 'right':
text.justification = 'center';
7. visible Определяет, отображается текст на холсте или нет:
text.visible = false; // скрыть текст
Позиция текста задаётся точкой Point(x, y), но по
умолчанию это нижний левый угол текста. Для центровки
или привязки к другим точкам используется свойство pivot
или метод position:
text.position = new Point(200, 150); // центрирование текста по позиции
Это позволяет перемещать текст плавно:
text.position.x += 10;
PointText может использоваться для отображения данных в
реальном времени. Например, счётчик FPS:
var fpsText = new PointText(new Point(50, 50));
fpsText.fillColor = 'black';
fpsText.fontSize = 18;
function onFrame(event) {
fpsText.content = 'FPS: ' + Math.round(view.getFrameRate());
}
Каждый кадр текст обновляется, что делает PointText
идеальным для динамических интерфейсов и визуализаций.
Цвет текста можно задавать не только как сплошной, но и как градиент:
text.fillColor = {
gradient: {
stops: ['red', 'yellow'],
radial: false
},
origin: text.bounds.topLeft,
destination: text.bounds.bottomRight
};
Также доступно применение тени:
text.shadowColor = 'rgba(0,0,0,0.5)';
text.shadowBlur = 12;
text.shadowOffset = new Point(4, 4);
text.remove();
var copy = text.clone();
copy.position.y += 50;
if (text.contains(event.point)) {
text.fillColor = 'blue';
}
Использование событий мыши и анимации позволяет создавать живые интерфейсы. Пример анимации перемещения текста по синусоиде:
var waveText = new PointText(new Point(100, 200));
waveText.content = 'Волнообразное движение';
waveText.fillColor = 'purple';
waveText.fontSize = 22;
function onFrame(event) {
waveText.position.y = 200 + Math.sin(event.count / 10) * 50;
}
PointText не поддерживает многострочные тексты через
символ \n. Для многострочного текста используется несколько
объектов PointText, расположенных друг под другом.PointText — простой и мощный инструмент для отображения
текста на холсте Paper.js.content,
fillColor, fontSize, fontFamily,
justification.PointText.Эти возможности делают PointText идеальным для создания
интерфейсов, анимаций и визуализации данных на холсте Paper.js.