首页 > 其他 > 详细

Svg操作

时间:2015-10-18 18:27:27      阅读:173      评论:0      收藏:0      [点我收藏+]

SVG文件的JavaScript操作

获取SVG DOM

如果使用img标签插入SVG文件,则无法获取SVG DOM。使用object、iframe、embed标签,可以获取SVG DOM。

var svgObject = document.getElementById("object").contentDocument;
var svgIframe = document.getElementById("iframe").contentDocument;
var svgEmbed = document.getElementById("embed").getSVGDocument();

 

由于svg文件就是一般的XML文件,因此可以用DOM方法,选取页面元素。

// 改变填充色
document.getElementById("theCircle").style.fill = "red";

// 改变元素属性
document.getElementById("theCircle").setAttribute("class", "changedColors");

// 绑定事件回调函数
document.getElementById("theCircle").addEventListener("click", function() {
   console.log("clicked")
});

 

读取svg源码

由于svg文件就是一个XML代码的文本文件,因此可以通过读取XML代码的方式,读取svg源码。

假定网页中有一个svg元素。

<div id="svg-container">
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" width="500" height="440">
        <!-- svg code -->
    </svg>
</div>

 

使用XMLSerializer实例的serializeToString方法,获取svg元素的代码。

var svgString = new XMLSerializer().serializeToString(document.querySelector(‘svg‘));

 

将svg图像转为canvas图像

首先,需要新建一个img对象,将svg图像指定到该img对象的src属性。

var img = new Image();
var svg = new Blob([svgString], {type: "image/svg+xml;charset=utf-8"});

var DOMURL = self.URL || self.webkitURL || self;
var url = DOMURL.createObjectURL(svg);

img.src = url;

 

然后,当图像加载完成后,再将它绘制到canvas元素。

img.onload = function() {
    var canvas = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0);
};

 

 

Svg操作

原文:http://www.cnblogs.com/rubekid/p/4889812.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!