SVG和VML区别杂谈
SVG和VML区别杂谈
很多组织一直在做这两种动态矢量语言的统一工作,SVG和VML的初衷不一样,SVG是为了集大成,VML却是为了方便Word向Web的迁移,所以相对于VML的傻瓜和方便,SVG简直就疯狂的强调其的可扩展性....
一个简单的例子,一条直线,如果要加一个箭头,VML里面直接在stroke里面添加一个属性startarrow或者endarrow就搞定了!
可以添加包括block,classic,diamond,oval,open,chevron,doublechevron这么多种的箭头,圆形的,钻石型的,箭头型的。我们基本用得着的都有。何其的方便!虽然当时没有体会,知道有一天看见SVG的恶心做法:
SVG,则要先定义一个marker标记,里面去画出箭头的形状,然后再链接到直线上。
更恶心的是,因为默认只有顺着线条切线方向的箭头,所以如果起始端需要箭头,使用固定角度是不行的,只有重画一个反方向的箭头,再链接过去....
这些我也就忍了,最后费了老大劲也算是搞定了,最后的最后,我突发奇想,想更改一下线条的颜色,这在VML中当然很容易,箭头的颜色也跟着变化了,结果SVG中非常的崩溃,居然箭头至今只能提供黑色(bugs.launchpad.net/inkscape/+bug/165865).....
虽然有一个更加恶心的hack,虽然这个bug已经上报到SVG标准里面,并且优先级挺高,可要实现估计得些时日。
做这个东东也有些时日了,从最初就想做得完善一些,如果质量能够达到产品级别就最好了,感觉越钻得深,两者的区别就越多,虽然不能武断的评论谁好谁劣,但总觉得SVG为了可扩展,牺牲了太多太多的方便性。
多比图形控件出现简化了的这种开发难度,它是一款基于Web的矢量图形控件,能够检测浏览器类型,自动选择VML或SVG方案进行做图, 类似于网页上的Visio控件,是目前国内外最佳的基于web矢量图解决方案,可以用于电力、化工、煤炭、工控组态软件、仿真、地理信息系统、工作流、复杂报表 工业SCADA系统、ERP流程设计系统、图形管理、图形拓扑分析、GIS地理信息系统系统、工程制图等领域。