【发布时间】:2020-09-14 02:21:36
【问题描述】:
我似乎无法为最新的 Fabric (4.1) 找到一个很好的例子,在整个画布上或在像 Rect 这样的对象上设置径向渐变。
我对线性渐变没有任何问题,但是为径向(我只想在中心)正确定位却让我望而却步。这是is a 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();
}
【问题讨论】:
标签: canvas fabricjs gradient radial-gradients