reactjs - 如何在使用画布绘制为图像时保留内部 div 的阴影?
问题描述
我试图在使用 HTML 画布将此 div 元素绘制为图像时保持框阴影。我怎样才能做到这一点?
我用来绘制图像的代码:
let scaledElement = document.getElementById("screenRef");
let canvas = await html2canvas(scaledElement);
let croppedCanvas = document.createElement("canvas");
let croppedCanvasContext = croppedCanvas.getContext("2d");
let cropPositionTop = 0;
let cropPositionLeft = 0;
let cropWidth = canvas.width;
let cropHeight = canvas.height;
croppedCanvas.width = cropWidth;
croppedCanvas.height = cropHeight;
croppedCanvasContext.drawImage(canvas, cropPositionLeft, cropPositionTop);
let dataUrl = croppedCanvas.toDataURL();
解决方案
这是我如何实现它的。
let croppedCanvas = document.createElement("canvas");
let croppedCanvasContext = croppedCanvas.getContext("2d"); // init data
let cropPositionTop = CANVAS.OFFSET_POSITION;
let cropPositionLeft = CANVAS.OFFSET_POSITION;
let cropWidth = canvas.width;
let cropHeight = canvas.height;
croppedCanvas.width = cropWidth + CANVAS.PADDING; //for getting space around main image
croppedCanvas.height = cropHeight + CANVAS.PADDING; //for getting space around main image
var grd = croppedCanvasContext.createLinearGradient(
CANVAS.START_X,
CANVAS.START_Y,
croppedCanvas.width,
croppedCanvas.height
);
grd.addColorStop(colorStop.stop, colorStop.color);
croppedCanvasContext.fillStyle = grd;
croppedCanvasContext.fillRect(
CANVAS.START_X,
CANVAS.START_Y,
croppedCanvas.width,
croppedCanvas.height
);
croppedCanvasContext.shadowOffsetX = CANVAS.START_X;
croppedCanvasContext.shadowOffsetY = CANVAS.START_Y;
croppedCanvasContext.shadowBlur = CANVAS.SHADOW_BLUR;
croppedCanvasContext.shadowColor = CANVAS.SHADOW_COLOR;
croppedCanvasContext.drawImage(canvas, cropPositionLeft, cropPositionTop);
推荐阅读
- delta-lake - Delta Lake 的自定义元数据/标签?
- python - 使用 praw 发布时自动向 reddit 添加评论
- javascript - React Native - 状态不会改变
- javascript - 滚动时Vuetify选项卡变为活动状态
- .net-core - ASP.NET Core 3 本地化只显示键
- typescript - 类型不可分配给映射类型
- java - uri parse 具有私有访问修饰符
- c# - 根据属性切换 TabControl 模板
- css - BEM Post CSS Stylelint 插件不能忽略“*:last-child”选择器
- c# - 如何为不存在的页面返回 404 错误?