html - 画布层和包含相互叠加的 SVG 的对象
问题描述
我有一组在 HTML 画布上工作的绘图工具,以及一组在对象标签中的 SVG 基础图像上工作的其他工具。
经过大量试验和错误以及缩放时 SVG 的像素化问题,将 SVG 放在对象标签中解决了调整视口大小或放大的像素化问题,尤其是在使用 SVG 工具时,手机/Safari。
但是,当使用画布工具时,SVG 再次出现像素化。
目标/预期结果: 将 Canvas 和 SVG 叠加在一起,每个都有定义的大小,可以随视口(手机、桌面等)缩放并保持绘制/放置在每个上的元素对齐。
此外,当激活 Canvas 工具以在画布层上工作时,显示未像素化的 SVG 层。
实际结果: 在调整视口大小、旋转手机等时,在画布上绘制的项目与 SVG 基础图像不对齐。
需要帮助: 有没有办法像我们在对象中使用 viewBox="0 0 3168 2448" 来定义画布大小?
我们如何非常精确地定义 SVG 和 Canvas 元素的尺寸/视图框?所以他们保持完美的视觉对齐?
在代码中,高度和宽度在调整视口/浏览器大小时非常精确地定义。他们仍然没有完全对齐。
<div id="m-container" class="jss332" style="width: 880.384px; height: 680.297px; margin: auto; transition: all 0.1s ease 0s;">
<object aria-labelledby="SVGm" id="loaded-svg-cont" class="jss44"
style="z-index: 5; position: absolute; top: 0px; left: 0px; width: 880.384px; height: 680.297px; pointer-events: all;">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 3168 2448">
</svg>
</object>
<div class="canvas-container" style="width: 880.384px; height: 680.297px; position: relative; user-select: none;">
<canvas id="281299b3" class="lower-canvas" width="1760.7683823529412" height="1360.59375"style="position: absolute; width: 880.384px; height: 680.297px; left: 0px; top: 0px; touch-action: none; user-select: none;">
</canvas>
<canvas class="upper-canvas" width="1760.7683823529412" height="1360.59375" style="position: absolute; width: 880.384px; height: 680.297px; left: 0px; top: 0px; touch-action: none; user-select: none; cursor: pointer;">
</canvas>
</div>
</div>
解决方案
推荐阅读
- regex - 使用informatica表达式中的正则表达式提取xml的两个标签之间的数据
- c - 打印整个指针
- vba - 如何使用 VBA 在文件夹中创建子文件夹
- javascript - 在 Svelte 中渲染嵌套对象
- statsmodels - 使用 krippendorff alpha 或 fleiss kappa 的低注释者协议
- groovy - ReadyAPI-在无头模式下请求访问令牌失败以在 CI/CD 管道中检索 oauth 2 令牌
- flutter - 错误:无法更新 Dart SDK。正在重试...使用 cygwin64\bin\7z
- c# - Selenium C# 注册字段密码输入验证
- python - Python - 如何接收数据并将其用作 websocket 服务器?
- azure - 保持 prem 访问数据库与 SQL Azure 同步