为了账号安全,请及时绑定邮箱和手机立即绑定

关于html中canvas使用svg的问题

关于html中canvas使用svg的问题

DIEA 2019-04-08 11:04:19
关于html中canvas使用svg的问题
查看完整描述

2 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞


1

2

3

4

5

6

7

8

9

      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方式

 


查看完整回答
反对 回复 2019-04-09
?
杨魅力

TA贡献1811条经验 获得超6个赞

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 中,每个被绘制的图形均被视为对象。


查看完整回答
反对 回复 2019-04-09
  • 慕粉52202
    慕粉52202
    请问一下您,是否处理过将svg图像渲染到canvas上,svg不显示的问题,在小程序上,目前只能在css和wxss中能显示出来,还有就是在开发工具上能显示出来,但是在在真机上是无法显示的,查了很多资料,都无法实现,小程序不支持svg在js中操作显示,是不是就没有别的转换方式显示了呢?
  • 2 回答
  • 0 关注
  • 1072 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信