javascript - 如何使用 Javascript 在 Canvas 上绘制 SVG?
问题描述
如何使用 Javascript(不使用 Dom)在 Canvas 上绘制此 svg?
<svg width="100" height="100">
<circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
Sorry, your browser does not support inline SVG.
</svg>
注意:post this和this中的答案仅在您有外部 SVG 时提供解决方案。我的要求是在画布(或其他任何东西)上绘制多个 svgs 变量 x、y、半径和颜色
解决方案
尝试使用图像来绘制(所以片段不起作用 - 但是当你编辑它时 - 它起作用)
let xml = new XMLSerializer().serializeToString(circSvg); // get svg data
let svg64 = btoa(xml); // make it base64
let b64Start = 'data:image/svg+xml;base64,';
let image64 = b64Start + svg64; // prepend a "header"
circImg.src = image64; // image source
circImg.onload = x=> {
can.getContext('2d').drawImage(circImg, 0, 0); // draw
}
svg<br>
<svg id="circSvg" width="100" height="100">
<circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
Sorry, your browser does not support inline SVG.
</svg>
<br>canvas<br> <canvas id="can"></canvas>
<img id="circImg" style="display:none">
推荐阅读
- javascript - 使用模板文字生成多个字符串
- java - 用户输入男性或女性
- azure-functions - 我可以使用注册用户流 API 连接器来填充自定义用户声明吗?
- python - Runtime.txt 与请求的运行时不同
- c# - 尝试将syncfusion json数据绑定到Firebase中的实时数据库
- android - 如何将android导航抽屉添加到非空的主要活动?
- go - 使用 text/message 和 gotext 读取语言环境失败,可能错误地导入其他 go 文件?
- laravel - Laravel - 将 TailwindCSS 样式的视图输出为 PDF
- android - 使用带有底部导航的 Android 导航组件时检测选项卡更改
- azure-devops-rest-api - 从测试外部链接和外部链接 ArtifactURI 中查找测试结果 URL