Кажется, я не могу найти хороший пример для последней версии Fabric (4.1), устанавливающей радиальный градиент либо на весь холст, либо на такой объект, как Rect.
У меня нет проблем с линейным градиентом, но правильное позиционирование для радиала (которое я просто хочу в центре) ускользнуло от меня. Вот это codepen, что я пробовал.
JS:
let canvas = new fabric.Canvas("c", {
isDrawingMode: false
});
let colorStops;
let angle = 180;
const shapeColorStops = {};
var anglePI = (-parseInt(angle, 10)) * (Math.PI / 180);
const setBackgroundGradient = (e) => {
let coords;
let type = e.target.id;
if (type == 'radial') {
console.log('trying to set radial gradient')
coords = {
r1: canvas.width/2,
r2: 0,
x1: canvas.width/2,
y1: canvas.height/2,
// x2: 0,
// y2: 0
}
}
else {
console.log('trying to set linear gradient')
coords = {
x1: (Math.round(50 + Math.sin(anglePI) * 50) * canvas.width) / 100,
y1: (Math.round(50 + Math.cos(anglePI) * 50) * canvas.height) / 100,
x2: (Math.round(50 + Math.sin(anglePI + Math.PI) * 50) * canvas.width) / 100,
y2: (Math.round(50 + Math.cos(anglePI + Math.PI) * 50) * canvas.height) / 100,
}
}
var grad = new fabric.Gradient({
type: type,
coords: coords,
colorStops: [
{
color: 'rgb(166,111,213)',
offset: 0,
},
{
color: '#200772',
offset: 1,
}
]});
canvas.setBackgroundColor(grad);
canvas.renderAll();
}