SVG绘图学习总结

  在我们平时做的很多网站项目中都会需要绘制各种各样的二维矢量图形。比如做城市地下管网的断面图、管线管点的坐标位置矢量标识图、钻孔位置或地层剖面图等等。我们有很多种方法来绘制这些矢量图(vml、canvas、svg等等),下面我要介绍的是SVG绘图语言,也是我在做项目中用到比较多的,仅以我的个人实战经验分享给大家,供大家参考:

一、SVG理论知识

  SVG是一种矢量标记语言,网上也有很多关于SVG的理论知识描述,大家可以自己去百度学习,比较通俗地说,SVG是一种语言,是一块画布,在这块画布上,用户可以按照它的语言格式,调方法去绘制各种点、线、面、矩形、多边形、圆形、贴图等等,从而画出自己想要的二维图形效果。

  注意:SVG最主要的一个应用就是绘制的二维图可缩放,每个节点均可添加点击或各种响应事件。

  (1)线段

     SVG标记节点:

      <line x1="0" y1="0" x2="300" y2="300" style="stroke:rgb(99,99,99);stroke-width:2"/>

  (2)折线

     SVG标记节点:

      <polyline points="0,0 0,20 20,20 20,40 40,40 40,60" style="fill:white;stroke:red;stroke-width:2"/>

  (3)圆

     SVG标记节点:

      <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red"/>

  (4)矩形

    SVG标记节点:

      <rect width="300" height="100" style="fill:rgb(0,0,255);stroke-width:1; stroke:rgb(0,0,0)"/>

    脚本中动态创建(其它几类节点类似,可百度查找到方法):

      var rect=document.createElementNS(‘http://www.w3.org/2000/svg‘,‘rect‘); 
            rect.setAttribute("id","rect"); 
            rect.setAttribute("x",0); 
            rect.setAttribute("y",0); 
            rect.setAttribute("width",200); 
            rect.setAttribute("height",200); 
            rect.setAttribute("fill",‘red‘); 
            svg.appendChild(rect); //svg为页面中添加的svg根节点

  (5)多边形

    SVG标记节点:

      <polygon points="220,100 300,210 170,250" style="fill:#cccccc;stroke:#000000;stroke-width:1"/>

  (6)路径

    SVG标记节点:

    <path d="M250 150 L150 350 L350 350 Z" />

  (7)贴图

    可以在多边形中平铺或填充图片,从而达到显示剖面纹理图的效果。

二、实际应用

  (1)基本的点线剖面图

    所有涉及到简单的绘制点、线、多边形等剖面图的都可以自己在js脚本中动态创建节点来绘制。

  (2)二维地图绘制:

    可在ArcMap中将矢量二维地图数据导出成SVG文件,导出过程中可以设置文字标识、颜色等等信息,导出的SVG文件即可以嵌入到网页中显示了。

  (3)管网拓扑图:

    与上面的二维地图绘制一样,将管网shp数据在ArcMap中打开,导出成SVG文件,然后嵌入到网页中显示。

  (4)地层剖面图

    该应用涉及到地质相关业务,总之,剖面得到的多边形可以通过SVG动态创建多边形节点,然后填充纹理图片路径,便可以显示各个地层多边形的纹理图了

  

  各应用效果图在后面再补上,先对自己做的一些关于SVG的经验做个总结。

作者:Ares_perfect

出处:http://www.cnblogs.com/onlyperfect/

本文以学习、研究和分享为主,如需转载,请联系本人,标明作者和出处,非商业用途!

时间: 2024-10-17 08:04:28

SVG绘图学习总结的相关文章

HTML5_04之SVG绘图

1.关于Canvas绘制图像: 问题:需要绘制多张图片时,必须等待所有图片加载完成才能开始绘制:而每张图片都是异步请求,彼此没有先后顺序,哪一张先加载完成完全无法预测: 方案: var progress=0;//全局加载进度 var img=new Image(); img.src='xx.jpg'; img.onload=function(){  progress+=10;//该图片权重  if(progress===100){   startDraw();  } }2.关于Canvas中某个

matplotlib绘图学习

matplotlib绘图学习 (1)matplotlib安装 下载地址https://pypi.python.org/pypi/matplotlib#downloads 下载windows包matplotlib-2.1.0-cp35-cp35m-win_amd64.whl 安装命令: python -m pip --user matplotlib-2.1.0-cp35-cp35m-win_amd64.whl 检查是否安装成功使用import导入操作,不报错即可 (2)绘制一个简单的折线图 imp

SVG相关学习(一)SVG基础

SVG 相关学习 SVG SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG viewBox <svg width="500" height="300"></svg>viewport svg 实际大小 viewBox="x, y, width, height" // x:左上角横坐标,y:左上角纵坐标,width:宽度,height:高度 视区盒子:以视区盒子大小选中元素然后缩放至vie

HTML5 十大新特性(五)——SVG绘图

相对于canvas绘图,SVG是一种绘制矢量图的技术.全称叫做Scalable Vector Graphics,可缩放的矢量图,在2000年就已经存在,H5把它纳入了标准标签库,并进行了一些瘦身.需要注意的是,SVG图形的属性不属于HTML DOM标准,需要用核心DOM的方法来操作:SVG的样式可以用css,但是只能用其专有的属性:如果要使用js动态生成SVG其中的元素,创建方法得用document.createElementNS('http://www.w3.org/2000/svg','标签

SVG绘图(二) —— 渲染满天星辰

看到一些炫酷的动画,总有种好想实现它,但是又无奈于腹中的代码量略少,只好不明觉厉,圆圆的大眼睛里满是对新事物的渴求. 在网页中嵌入动画,过去比较流行采用Falsh.Java Applet和微软的SilverLight,但他们的网页安全性.兼容性.难操作性以及文件的大小等缺陷让很多Web开发者又爱又恨.Gif依旧是个不错的选择,但遗憾的是并不能用DOM操控其中的元素.自从有了SVG.HTML5和CSS3,一些简单的平面动画的实现变得方便和简单,虽然他们在一些方面譬如兼容性和可操作性等依然未能完全尽

通过海龟绘图学习Python-01

作为一名Python初学者,看教程死记硬背理论知识固然是必要的,也可以通过海龟绘图的方式进行实践操作.在实践的过程中加深对理论知识的理解.接下来,本人将通过海龟绘图的方式开启Python的学习之路.注:Python的基本理论知识可以通过官网网站进行学习,网上也有很多的教材,本人假定读者已经学习了入门知识. 什么是海龟绘图海龟绘图是Python内置的turtle 模块(源码: Lib/turtle.py),使用海龟绘图可以编写重复执行简单动作的程序画出精细复杂的形状.例如下图 2.如何使用导入tu

R绘图学习笔记(二)-

依照计量对比药物A和药物B的响应情况 #计量向量 dose <- c(20,30,40,45,60) #药物A的反应向量数据 drugA <- c(16,20,27,40,60) #药物B的反应向量数据 drugB <-c(15,18,25,31,40) #par函数用于设定或询问绘图参数.参数设定可通过par(参数名 = 取值)或par(赋值参数列表)的形式进行. opar <-par(no.readonly=TRUE) par(lwd=2,cex=1.5,font.lab=2)

SVG 一些学习参考

http://www.cnblogs.com/pingfan1990/p/4757934.html http://www.cnblogs.com/duanhuajian/archive/2013/07/31/3227410.html http://www.zhangxinxu.com/wordpress/2014/08/so-powerful-svg-smil-animation/ animateTransform中rotate针对的svg左上角那个点移动到元素中心点 实例代码: <svg wi

SVG的学习(34—36)

使用js来动态绘制svg图片,首先就是要创建svg 节点. 使用createElementNS(),语法: document.createElementNS(namespaceURI, qualifiedName[, options]); 参数: 有效的命名空间URL有: 代码举例: var nameSpace = 'http://www.w3.org/2000/svg'; //命名空间url var max = Math.max.apply(null, data); var proportio