Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在HTML5画布上绘制Javascript修改的SVG对象?_Javascript_Html_Svg_Canvas - Fatal编程技术网

如何在HTML5画布上绘制Javascript修改的SVG对象?

如何在HTML5画布上绘制Javascript修改的SVG对象?,javascript,html,svg,canvas,Javascript,Html,Svg,Canvas,我试图实现的总体任务是加载一个SVG图像文件,在某处修改颜色或文本,然后使用drawImage将其绘制到HTML5画布上,但任何合理的替代方案都可以 我遵循了另一个StackOverflow问题的建议,即如何在Javascript中加载和修改SVG文件,如下所示: <object class="svgClass" type="image/svg+xml" data="image.svg"></object> ctx.drawImage(myModifiedSVG, im

我试图实现的总体任务是加载一个SVG图像文件,在某处修改颜色或文本,然后使用drawImage将其绘制到HTML5画布上,但任何合理的替代方案都可以

我遵循了另一个StackOverflow问题的建议,即如何在Javascript中加载和修改SVG文件,如下所示:

<object class="svgClass" type="image/svg+xml" data="image.svg"></object>
ctx.drawImage(myModifiedSVG, img_x, img_y);
这就行了。现在,修改后的SVG显示在我的网页中

但我不想只显示它-我想将其作为HTML5画布更新的一部分绘制,如下所示:

<object class="svgClass" type="image/svg+xml" data="image.svg"></object>
ctx.drawImage(myModifiedSVG, img_x, img_y);
如果我尝试存储getSVGDocument的结果并将其作为myModifiedSVG传递,我只会收到一条错误消息

如何为修改后的SVG调用HTML5画布绘制

编辑:通过执行以下操作,我可以在HTML5画布上绘制SVG图像:

var theSVGImage = new Image();
theSVGImage.src = "image.svg";
ctx.drawImage(theSVGImage, img_x, img_y);

这很好,但我不知道如何以这种方式修改加载的SVG图像中的文本/颜色!如果有人能告诉我如何进行修改,那么这也是一个解决方案。我不想查看对象HTML标记。

一次,您可以重建一个新的svg文件,将其加载到控制台中。log'ready:单击以切换图像' .catchconsole.error;
一次,您可以重建一个新的svg文件,将其加载到控制台中 .catchconsole.error;
您可以使用illestrator制作svg。保存后,您可以像html一样在任何代码编辑器中重新打开svg,然后您可以编辑颜色。谢谢,但我需要在不同的帧之间将颜色更改为不同的颜色,所以没有一种静态颜色可以。有最短的解决方案。显然,您可以省去最后的canvas.toDataURL。如果您希望每一帧都更改svg,可能值得使用一个库。可以使用ccprog链接中的方法完成,但这意味着每帧加载一个全新的svg图像。这对于浏览器来说太多了,考虑到任务的异步性,能够提前生成足够多的帧将是一场编码噩梦。。有些库能够将SVG标记转换为画布命令,有些库公开它们使用的js对象,并允许您对其进行编辑,例如fabricjs。总的来说,我想这对你来说是一个更明智的举动,天哪,我不喜欢libs…好主意,一个SVG到javascript的转换器可能在这里工作。正如您所说,我可以很容易地找到包含我想要更改的文本/颜色的行,并且它确实节省了每帧重新加载和重新设置整个SVG的时间。保存后,您可以像html一样在任何代码编辑器中重新打开svg,然后您可以编辑颜色。谢谢,但我需要在不同的帧之间将颜色更改为不同的颜色,所以没有一种静态颜色可以。有最短的解决方案。显然,您可以省去最后的canvas.toDataURL。如果您希望每一帧都更改svg,可能值得使用一个库。可以使用ccprog链接中的方法完成,但这意味着每帧加载一个全新的svg图像。这对于浏览器来说太多了,考虑到任务的异步性,能够提前生成足够多的帧将是一场编码噩梦。。有些库能够将SVG标记转换为画布命令,有些库公开它们使用的js对象,并允许您对其进行编辑,例如fabricjs。总的来说,我想这对你来说是一个更明智的举动,天哪,我不喜欢libs…好主意,一个SVG到javascript的转换器可能在这里工作。正如您所说,我可以很容易地找到包含我想要更改的文本/颜色的行,并且它确实节省了每一帧重新加载和重定整个SVG的时间。