猿问

关于html中canvas使用svg的问题

关于html中canvas使用svg的问题


DIEA
浏览 1073回答 2
2回答

慕哥6287543

123456789      window.onload = function () {          var ctx = document.getElementById("canvas").getContext('2d');          var svg_xml = (new XMLSerializer()).serializeToString(document.getElementById("svg"));           var img = new Image();          img.src = "data:image/svg+xml;base64," + window.btoa(svg_xml);          img.onload = function () {              ctx.drawImage(img, 0, 0);          };      }ctx和svg_xml分别为canvas和svg对象;最后采取base64方式 

杨魅力

SVG 是一种使用 XML 描述 2D 图形的语言。Canvas 通过 JavaScript 来绘制 2D 图形。1. 对于画在Canvas上的部件,你需要处理重绘。而SVG则不用,你修改svg dom则系统会自动帮你重绘2.Hittest,即canvas不负责帮你侦测鼠标/触摸事件发生在哪一个图形元件上;而svg可以。3.Canvas效率高得多canvas的工作方式就像传统的2d图形引擎比如GDI;而SVG的工作方式更像WPF(XAML)、HTML/CSS这类由标记控制的绘图引擎4.Canvas 是逐像素进行渲染的。在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。5.SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器。在 SVG 中,每个被绘制的图形均被视为对象。
随时随地看视频慕课网APP

相关分类

Html5
我要回答