css - 将 box-shadow 解释为 canvas ShadowXXX 选项

标签 css canvas shadow

我必须在 Canvas (2d)中绘制一个弓对象。该框具有指定为 css 定义的外部阴影

盒子阴影:0 1px 2px 0 rgba(0, 0, 0, 0.15)

我不知道如何使用shadowOffsetX/Y、shadowColor和shadowBlur将其转换为定义阴影的 Canvas 方式。

如果我看一下shadowBlur规范,它显然与像素无关,但它只说“它是高斯模糊效果的参数”(释义)。事实上,我觉得这个规定不够明确。

使用渐变到透明会更好吗?但这样的话它不会错过模糊效果吗?

最佳答案

现在有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);

关于css - 将 box-shadow 解释为 canvas ShadowXXX 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33414618/

相关文章:

javascript - 显示结果后清除 PHP 计算器屏幕

javascript - 使用包含当前值的 float DIV 自定义 HTML 范围输入

html - 关闭按钮不关闭 onclick bootstrap

iphone - 在 UIImageView 后面创建阴影的最佳方法是什么

android - 适用于 Android 的 Shadow Gradle 插件

android - react native : Elevation Style Property - Change shadow direction

javascript - Firefox:在地址栏中强制全部大写

wpf - 在 Canvas 上查找控制位置

javascript - image.onload 后变量值无法使用?

javascript - Starfield canvas程序占用CPU过多