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地理信息系统系统工程制图等领域。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

AndroidStudio封装SDK的那些事

<divclass"markdown\_views"<!flowchart箭头图标勿删<svgxmlns"http://www.w3.org/2000/svg"style"display:none;"<pathstrokelinecap"round"d"M5,00,2.55,5z"id"raphael

Java获得今日零时零分零秒的时间(Date型)

publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS