考虑到svg也是html5的标准之一,考虑继续抽空把svg的topo原型移植完。
阻力:已经有webtopology开源包了,实现的功能基本类似
参照vml模型的顺序,先实现基本的文本和画线功能。
之前在前期探索中,已经完成了画矩形、画线的探索,包括ie/opera的兼容,中文处理等。因此基本功能还算顺利。
主要实现文本、线条的显示。
以及基本的js操作的简单封装。
兼容ie+asv和opera。
其中ie使用embed,opera动态创建。
注意:在opera上,如果不指定style,默认的线是看不见的。
测试页面1basic.htm
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title> 图例 </title> <!-- legengd.html 1.显示文字、线 2.兼容ie和opera.ie用embed(empty.svg,只包含一个组g1), opera用create --> </head> <script type="text/javascript" language="javascript" src=".\js\svg.js"></script> <script> </script> <body bgcolor="#ffffff"> <div id="divsvg"> <embed name="svg1" pluginspage="http://www.adobe.com/svg/viewer/install/" align="top" src="empty.svg" height=10 width=10 type="image/svg+xml"> </div> </body> <script> var svg; var plat; function show(){ //var svg; //ie使用embed方式预先加载svg svg=initSVG(200,200,1); var svgdoc; svgdoc=getSVGDocument(svg); plat=getrootg(svg,svgdoc); //位置为相对位置 //超出范围会被截掉 //生成一行文本 curentStyle="stroke:black;fill:white"; createText(svgdoc,5,20,"电路带宽图例",curentStyle); //生成一个矩形 curentStyle="stroke:black;fill:green"; createrect(svgdoc,100,100,3,curentStyle); //生成一条线 curentStyle="stroke:black;fill:none;stroke-width:1"; createline(svgdoc,0,0,200,0,curentStyle); curentStyle="stroke:red;fill:none;stroke-width:3"; createline(svgdoc,0,0,0,200,curentStyle); curentStyle="stroke:blue;fill:none;stroke-width:5"; createline(svgdoc,0,0,200,200,curentStyle); curentStyle="stroke:#3366ff;fill:red;stroke-width:5"; createline(svgdoc,100,0,100,200,curentStyle); } </script> </html>
空的svg,只包含一个g1,作为底层。同时设置编码,可以支持中文显示
empty.svg
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" > <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="g1"> </g> </svg>
基本封装的svg.js
http://download.csdn.net/detail/luqin1988/5005164
以研究出很多模型,包括跨浏览器移动,缩放,3D,滤镜特效,动画,弹球,绘图,以及多款SVG游戏,如需要请留言。