gpt4 book ai didi

jquery - 我的 HTML5 Canvas 代码可以转换为 SVG 吗?

转载 作者:搜寻专家 更新时间:2023-10-31 22:15:46 26 4
gpt4 key购买 nike

我有以下示例代码:

    function drawCanvas() {
var canvas = document.getElementById("logoText");
var c = canvas.getContext('2d');
c.lineWidth = 1;
c.lineStyle = "#FFFFFF";
c.fillRect(10, 10, 150, 40);
c.fillStyle = "#FFFFFF";
c.font = "22px 'HelveticaNeue-Light','Helvetica Neue Light','Helvetica Neue',sans-serif"
c.fillText("Test", 20, 45);
hexstring1 = "\u2610";
c.fillText(hexstring1, 20, 70);
}

如果我假设使用同时支持 SVG 和 Canvas 的浏览器,那么我该如何转换此代码以使用 SVG。

另外,与 Canvas 相比,使用 SVG 有什么优势或劣势?

最佳答案

SVG 像 HTML 本身一样是基于标签的。因此,您必须在 SVG 标记内插入 DOM 节点。您的示例大致转换为以下代码。

您可以像任何其他节点一样在 JavaScript 中创建它,但请确保使用 document.createElementNS( 'http://www.w3.org/2000/svg', 'rect' ); 插入节点而不是通常的 document.createElement( 'div' );

<svg xmlns="http://www.w3.org/2000/svg"
version="1.1"
viewbox="0 0 100 100">
<rect x="10" y="10" width="150" height="40" style="stroke: #FFFFFF; stroke-width: 1px" />
<text x="20" y="45" style="fill: #FFFFFF; font-family: 'HelveticaNeue-Light','Helvetica Neue Light','Helvetica Neue',sans-serif; font-size: 22px">Test</text>
<text x="20" y="70" style="fill: #FFFFFF; font-family: 'HelveticaNeue-Light','Helvetica Neue Light','Helvetica Neue',sans-serif; font-size: 22px">&#9744;</text>

</svg>

与 canvas 相比,使用 SVG 有两个优点:

  • 您的图像缩放得更好。如果您放大图像,伪影就会少得多。
  • 您可以使您的元素“可点击”。将与 HTML 中相同的事件附加到 SVG 中的任何元素。例如,您可以使用 SVG 制作某种自定义按钮,附加点击处理程序并将其用作提交按钮。

关于jquery - 我的 HTML5 Canvas 代码可以转换为 SVG 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9547497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com