将 box-shadow 解释为 canvas shadowXXX 选项
Interpret box-shadow as canvas shadowXXX options
我必须在 canvas (2d) 中绘制一个弓对象。该框具有指定为 css definition
的外部阴影
框阴影:0 1px 2px 0 rgba(0, 0, 0, 0.15)
我不知道如何使用 shadowOffsetX/Y、shadowColor 和 shadowBlur 将其转换为 canvas 定义阴影的方式。
如果我查看 shadowBlur 规范,它显然与像素无关,但它只说 "it's a parameter for a gaussian blur effect"(释义)。实际上,我发现这未指定。
使用渐变到透明会更好吗?但是这样不会错过模糊效果吗?
阴影模糊以像素为单位,仅支持像素尺寸。 0的模糊有锐边,1是一个像素的模糊,2是两个像素的模糊等等。它 不受 二维 API 变换的影响。 canvas 2D API.
不支持阴影扩散
BTW 值应该是合格的。我在 CSS.
中你忘记的地方添加了 px
所以CSS
box-shadow:0px 1px 2px 0px rgba(0, 0, 0, 0.15);
变成
ctx.shadowBlur = 2;
ctx.shadowColor = "rgba(0, 0, 0, 0.15)";
ctx.shadowOffsetX = 0;
ctx.shadowOffsetY = 1;
现在有 filters 类似于 CSS 过滤器属性并接受相同的功能。虽然还是实验技术
// create canvas
const canvas = document.createElement("canvas");
canvas.width = 500;
canvas.height = 500;
// set context
const context = canvas.getContext("2d");
context.fillStyle = '#ff0';
context.rect(50, 50, 100, 100);
// set shadow filter
let offsetX = 20;
let offsetY = 0;
let blurRadius = 5;
let color = 'rgba(255, 0, 0, 0.8)';
context.filter = 'drop-shadow('+ offsetX + 'px ' + offsetY + 'px ' + blurRadius + 'px ' + color + ')';
context.fill();
document.body.appendChild(canvas);
我必须在 canvas (2d) 中绘制一个弓对象。该框具有指定为 css definition
的外部阴影框阴影:0 1px 2px 0 rgba(0, 0, 0, 0.15)
我不知道如何使用 shadowOffsetX/Y、shadowColor 和 shadowBlur 将其转换为 canvas 定义阴影的方式。
如果我查看 shadowBlur 规范,它显然与像素无关,但它只说 "it's a parameter for a gaussian blur effect"(释义)。实际上,我发现这未指定。
使用渐变到透明会更好吗?但是这样不会错过模糊效果吗?
阴影模糊以像素为单位,仅支持像素尺寸。 0的模糊有锐边,1是一个像素的模糊,2是两个像素的模糊等等。它 不受 二维 API 变换的影响。 canvas 2D API.
不支持阴影扩散BTW 值应该是合格的。我在 CSS.
中你忘记的地方添加了 px所以CSS
box-shadow:0px 1px 2px 0px rgba(0, 0, 0, 0.15);
变成
ctx.shadowBlur = 2;
ctx.shadowColor = "rgba(0, 0, 0, 0.15)";
ctx.shadowOffsetX = 0;
ctx.shadowOffsetY = 1;
现在有 filters 类似于 CSS 过滤器属性并接受相同的功能。虽然还是实验技术
// create canvas
const canvas = document.createElement("canvas");
canvas.width = 500;
canvas.height = 500;
// set context
const context = canvas.getContext("2d");
context.fillStyle = '#ff0';
context.rect(50, 50, 100, 100);
// set shadow filter
let offsetX = 20;
let offsetY = 0;
let blurRadius = 5;
let color = 'rgba(255, 0, 0, 0.8)';
context.filter = 'drop-shadow('+ offsetX + 'px ' + offsetY + 'px ' + blurRadius + 'px ' + color + ')';
context.fill();
document.body.appendChild(canvas);