`
Lyishuai
  • 浏览: 33701 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

SVG开发学习

阅读更多

SVG中可以添加三种基本的物件:文本,图形和路径。

SVG文本(text):
<text style="fill:blue;" y="15">blueknight</text>

 

SVG图形:
1、矩形

<rect style="fill:yellow;" width="300" height="100"/>


2、圆
<circle style="fill:blue;stroke:red;"cx="200"y="200"r="100"/>

 

<path style="fill:blue;stroke:red;"d="M200,100c0,55.23-44.77,100
-100,100S0,155.23,0,100S44.77,0,100,0s100,44.77,100,100z"/>

 

SVG路径(path):
路径使用下面的属性来描述:
"moveto" 设置新的坐标点
"lineto" 画一条直线
"curveto" 使用贝赛尔函数画制曲线
"arc" 画椭圆和圆
"closepath" 闭合路径

 

<path d="M 50 10 L 350 70 L 100 120 z"/>
"M"代表moveto,设置坐标点,"L"代表"lineto",画一条直线,z代表结束。

 

SVG样式表(CSS):
                        内部样式表,植入式样式表,外部样式表。


植入式样式表:
.st2{fill:none;stroke:#990000;stroke-width:2;}

 

SVG填充(fill):
"填充"(fill)>>
fill后面可使用的值: none, current-color, (color)
"none"是无色,"Current-color"返回的是一个父文档(可以是XML文档或者SVG文档)的颜色值,(color)是自定义的色彩。

 

"填充规则"(fillrule)>>
fillrule后可使用的值: evenodd, nonzero, inherit
填充规则属性定义对所有路径区域填充或者只是对交叉部分填充
"inherit" 指的是当前物件的填充属性和围绕它的物件(或物件组)的属性一致。

 

"填充透明度"(fill-opacity)>>
fill-opacity后可使用的值: 0到1的任何数
填充透明度决定了一个物件的填充是实色填充(透明度数值为1)还是透明的填充(透明度数值为0).关于物件的透明度属性其他还有如:"笔划透明度"(stroke-opacity),对应于笔划的透明程度;"透明"(opacity),对应于物件整体的透明程度。

 

SVG笔划(stroke):
"笔划"(stroke)>>

stroke后面可使用的值: none, current-color, (color)
笔划属性决定了物件是否利用笔划进行勾勒,并且使用什么样颜色的笔画。"none"是无色,"Current-color"返回的是一个父文档(可以是XML文档或者SVG文档)的颜色值,(color)是自定义的色彩。

 

"笔划宽度"(stroke-width)>>
stroke-width后可使用的值是: (width), inherit
"笔划宽度"默认值是1像素宽度。用户也可以自定义宽度,可以使用像素值也可以使用百分比。这里的所有SVG图像都使用的是像素值."inherit"代表继承前面(父)的物件(或物件组)的笔划属性。

 

"笔划端点"(stroke-linecap)>>
stroke-linecap可使用的值是: butt, round, square, inherit
"笔划端点"的属性定义了开放笔划(未闭合)的端点的形状,分别是"粗大的"butt,"圆滑的"round,"平整的"square和"继承 的"inherit.

 

"笔划连接"(stroke-linejoin)>>
stroke-linejoin可使用的值是:miter, round, bevel, inherit
笔划连接属性定义了路径拐角的形状,"miter"是默认值,"round"光滑连接,"bevel"折线连接,"inherit"继承

 

"笔划圆角连接"(stroke-miterlimit)>>
stroke-miterlimit后可使用的值是: (miterlimit), inherit
"笔划圆角连接"定义了两条相交成一定角的线在连接处的圆滑程度。数值必须为大于1的整数,默认的值是8。

 

"虚线笔划"(stroke-dasharray)>>
stroke-dasharray后可使用的值是:(dasharray), inherit
<path style="stroke-dasharray:12 12">
虚线笔划定义了使用虚线的虚化程度

 

SVG梯度(Gradients):
梯度是填充和笔划属性的一个特殊应用。梯度可以产生用矢量完成的色彩渐变。SVG支持线式的(linear)和圆式的(radial)色彩梯度变化。

 

梯度属性的实现利用了(defs)标签(元素),这个标签包含了填充和笔划属性,由此,可以给物件加入特别的效果。结合下面的代码和例子,体会(defs)标签的含义和使用。

 

<defs>
   <radialGradient id="gradient1" cx="150.0005"cy="100" r="113.7914" fx="150.0005" fy="100">
 <stop offset="0.19" style="stop-color:#FFFF00"/>
 <stop offset="0.4782" style="stop-color:#FFD00D"/>
 <stop offset="1" style="stop-color:#FE7312"/>
   </radialGradient>
</defs>

 

SVG滤镜:
<svg width="4in" height="3in">
  <defs>
    <filter id="CoolTextEffect">
      <!-- Definition of filter goes here -->
    </filter>
  </defs>
  <text style="filter:url(#CoolTextEffect)">Text with a cool effect</text>
</svg>

 

两个关键的属性就是SourceGraphic和SourceAlpha.SourceGraphic表示了需要被滤镜的原始物件,例如图形,文 本.SourceAlpha和SourceGraphic属性上基本类似,但包含了一个alpha通道。这样可以通过alpha通道的值实现滤镜的功能。

  通过简单滤镜的组合,还可以产生更加丰富和多样的效果来。一般,图像滤镜效果的产生首先是结合简单滤镜形成总的效果然后叠加入图像中产生最终图像。


<filter id="MyFilter">
 <feGaussianBlur in="SourceAlpha" stdDeviation="4" result="blur"/>
 <feOffset in="blur" dx="4" dy="4" result="offsetBlurredAlpha"/>
 <feSpecularLighting in="blur" surfaceScale="5" specularConstant="1" specularExponent="10" lightColor="white" result="specularOut">
   <fePointLightx="-5000" y="-10000" z="20000"/>
 </feSpecularLighting>
 <feComposite in="specularOut" in2="SourceAlpha"operator="in" result="specularOut"/>
 <feComposite in="SourceGraphic" in2="specularOut"operator="arithmetic" k1="0" k2="1" k3="1"k4="0" result="litPaint"/>
 <feMerge>
  <feMergeNode in="offsetBlurredAlpha"/>
  <feMergeNode in="litPaint"/>
 </feMerge>
</filter>

 

SVG和当前的标准网络图像(JPEG,GIF,PNG):
image xling:href="/ "

 

SVG支持ICC色彩模式:
SVG文件可以自由的制定所使用的色彩模式。使用ICC色彩模式需要定义(icc-color)属性。SVG文件默认的色彩是sRGB色彩,但是你可以通过(icc-color)转换到ICC色彩。

 

  下面的例子中同时使用了两种色彩定义,当用户系统支持ICC色彩模式时(win98和Mac OS已经自动安装),就会以ICC模式显示下面的"S V G",填充色#900000,笔划色#800080。否则按照填充色红色,笔划色#0000FF显示。
 
fill:red icc-color(myRGB,90,0,0);fill-opacity:.5;
stroke:#0000FF icc-color(myRGB,128,0,128);


SVG的变形属性:
"矩阵"( (a)(b)(c)(d)(e)(f) )>>

"矩阵"定义了一个2*3的矩阵(或者看作六个数的一个数列). 它和元素相匹配.详细请参看下面其他"变化"的解释来理解.

 

"移动"( (tx)[(ty)] )>>
"移动"属性的设置将移动元素.(tx)的值沿着x轴,(ty)的值沿着y轴.在六数数列中(即一个矩阵),数列的最后两位为(tx)(ty).

如果要放缩元素而元素又不在中心点(0,0),那么你必须先将元素移动使元素中心在中心点,然后执行"比例',元素放缩后,再将元素移动回到原来的位置.例如,要把一个在(150,100)出的元素缩小到50%,你需要执行下列步骤:
  1. "移动"(150,100)
  2. "比例" .5
  3. "移动"(-150,-100)
  (请注意次序)

 

"旋转"( (rotate-angle) )>>
"旋转"属性的设置可以控制元素绕着中心点(0,0)旋转任意角度(rotate-angle).例如,如果角度值(rotate-angle)为45 度,元素将会顺时针旋转45度.就像在"比例"中我们做的,如果元素不在中心点,我们首先要将它移动到中心点,然后旋转,再将它移回原来的位置.

 

"x轴倾斜">>
"x轴倾斜"将在中心点(0,0)把元素在x轴轴向倾斜一定角度(angle).在六数数列中(即一个矩阵),"x轴倾斜"角度(angle)在第三位以弧度表示.

 

"y轴倾斜">>
"y轴倾斜"将在中心点(0,0)把元素在y轴轴向倾斜一定角度(angle).在六数数列中(即一个矩阵),"y轴倾斜"角度(angle)在第二位以弧度表示.

 

SVG动画:
颜色动画>>
(animateColor)元素定义了SVG颜色动画的属性.

<animateColor attributeName="fill" attributeType="CSS" values="red;blue;yellow;green;red" dur="10s" repeatCount="indefinite" />
attributeName定义了色彩动画的性质,即填充变色,attributeType定义为SVG规范中已经给出 的具有动画性质的CSS(串接样式表 Cascading Stylesheets-简称CSS).其他的attributeType还有"XML"(动态标识语言)和"auto"(默认设置).

 

需要产生动画的元素知道了要对什么进行动画,(上面的例子中元素就是被标识的"gradient_star"),它还需要知道怎样进行变化来长生动画.这需要下面的属性值来描述:

 

from 定义起始数值
to 定义结束数值
by 定义相对的偏移值
values 一张相对分离的数值表

 

利用标签dur和repeatCount控制动画的时间属性.色彩动画总的持续时间由dur决定,在这个例子中是10秒,动画的循环次数由 repeatCount定义,本例中repeatCount的值是不定值"indefinite",动画将无限循环播放下去.

 

运动路径>>
(animateMotion)标签允许元素产生一些简单的旋转,放缩,移动和倾斜变化.

 

在(animateMotion)标签里添加路径数据,SVG元素将可以沿着路径产生运动.
"旋转"rotate属性控制SVG元素沿着特定路径运动时 的的旋转性质.旋转的值可以是一个相对于当前用户的图形系统中所给定的x轴定义的一个角度值,也可默认为"auto",即沿着路径方向旋转,或 是"auto-reflect",沿着路径方向的180度反方向旋转.在上面的例子中,沿垂直的八字形运动的元素旋转的值是-45度,沿着水平八字形运动 的元素旋转的值是"auto".

 

运动控制>>
  默认的运动一般是线性运动.calcMode的下列属性能进一步控制元素的运动:

 

  离散
  动画将在两个数值之间产生跳跃的变化.

 

  线性
  默认设置.

 

  步进
  类似于线性,但定义了类线性变化的间隔值.

 

  曲线
  对应于按照贝赛尔曲线定义的时间-位置曲线.

 

  关键曲线
  使用"曲线"模式,能够用最小的定义产生很复杂的变化.例如,实时的控制元素的x和y值,就能对应的实时控制元素的运动.

 

  使用"曲线"模式,动画元素需要包含keySplines属性值.keySplines定义了贝赛尔曲线的关键控制点,来控制动画的变化.这样的控制允许平滑的产生变化(类似于淡入淡出的平滑效果),这一点在动画中非常重要.

 

 

 

0
0
分享到:
评论

相关推荐

    基于改进YOLOv5s的森林烟火检测算法.pdf

    基于改进YOLOv5s的森林烟火检测算法.pdf

    人力资源管理工具绩效考核excel模板01.xlsx

    人力资源管理工具绩效考核excel模板01

    施工班组长绩效考核表.xls

    施工班组长绩效考核表

    57 -营业部经理绩效考核表1.xlsx

    57 -营业部经理绩效考核表1

    XX公司行政部绩效考核指标.xls

    XX公司行政部绩效考核指标

    ant-apache-xalan2-1.9.4-2.el7.x64-86.rpm.tar.gz

    1、文件内容:ant-apache-xalan2-1.9.4-2.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ant-apache-xalan2-1.9.4-2.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    部门绩效考核表模板(基于KPI以月度为例2).xlsx

    部门绩效考核表模板(基于KPI以月度为例2)

    11-6-质检员绩效考核表(含自动计算、等级评价及任意设置等级).xlsx

    11-6-质检员绩效考核表(含自动计算、等级评价及任意设置等级)

    2024年最新全国河流、湖泊矢量数据(数据权威)

    2024最新全国河流湖泊矢量数据 【数据介绍】 2024年中国河流湖泊数据 一份包含中国境内所有主要河流和湖泊的地理信息数据。 数据格式:Shapefile:广泛使用的GIS数据格式,方便在各类GIS软件中使用。 数据获取:访问OpenStreetMap官网,通过导出工具选择中国区域并下载所需的数据。 使用Geofabrik等第三方网站,可以下载预处理好的中国区域的OSM数据。 数据使用:GIS软件:如QGIS、ArcGIS等,用户可以在这些软件中导入OSM数据进行可视化、分析和编辑。 数据应用: 环境研究:分析河流湖泊的水质变化,研究水资源分布及其环境影响。 城市规划:用于规划城市水系、洪水防控、水资源管理等。 导航和旅游:为河流湖泊的导航和旅游路线规划提供数据支持。 科研:为水文地理研究、生态保护、气候变化等领域提供基础数据。 数据特点: 实时更新:OSM数据由全球用户贡献,具有较高的实时性和更新频率。 开放性:所有数据都在开放许可下发布,允许用户自由使用、修改和分发。 详细性:由于全球志愿者的不断努力,数据细节较为丰富,涵盖了从主要河流湖泊到小型水体的广泛范围。 数据时间2024年5月,shp格式,数据来源OpenStreetMap。 OpenStreetMap(OSM)介绍: 一个开放的、免费的、全球性的地图项目,由全球的志愿者和地图爱好者们共同创建和维护。 OSM的数据包括道路、建筑、公园、河流、湖泊等各类地理信息。由于是由众多志愿者共同编辑,OSM的数据具有很高的实时性和详细程度,特别是在一些活跃的区域,地图数据的更新速度和精度往往超过商业地图服务。 用户可以直接在OSM官网下载地图数据,数据格式主要有OSM XML和PBF等。此外,还有一些第三方网站和工具提供更加便捷的数据下载和处理服务,如Geofabrik、Overpass API等。 OSM的数据可以在各种GIS软件中使用,如QGIS、ArcGIS等。此外,还可以使用Python的OSMnx、GeoPandas等库进行编程处理,或者通过Leaflet、Mapbox等JavaScript库将OSM数据集成到web地图应用中。 OSM的所有数据都在开放许可下发布,允许用户自由使用、修改和分发。这使得OSM成为了许多公共项目、研究机构和商业公司的重要数据来源。

    部门绩效考核评分表.xlsx

    部门绩效考核评分表

    12-11-运输车队长绩效考核表(含自动计算、等级评价).xlsx

    12-11-运输车队长绩效考核表(含自动计算、等级评价)

    ant-javadoc-1.9.4-2.el7.x64-86.rpm.tar.gz

    1、文件内容:ant-javadoc-1.9.4-2.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ant-javadoc-1.9.4-2.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    springboot整合 freemarker方法

    springboot整合 freemarker方法

    apache-commons-codec-1.8-7.el7.x64-86.rpm.tar.gz

    1、文件内容:apache-commons-codec-1.8-7.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/apache-commons-codec-1.8-7.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    (数据权威)全国旅游抽样调查数据

    《旅游抽样调查资料》是反映入境游客在华(内地)花费和国内居民国内旅游情况的资料性年刊,分为上下两篇。 上篇为在华(内地)停留时间在3个月以内的入境游客抽样调查资料,由综合分析报告和调查分类数据两部分组成,分类数据包括:入境游客的主要特征,入境外国人、港澳台同胞的花费水平和花费构成、在境内的停留时间以及入境次数、流向和对住宿单位的选择等。 下篇为国内旅游抽样调查资料,汇集了对城镇居民和农村居民的国内旅游抽样调查结果,共分为四个部分:第一部分为综合分析报告;第二部分为国内旅游出游及花费情况;第三部分为城镇居民国内旅游抽样调查分类数据;第四部分为农村居民国内旅游抽样调查分类数据。

    二代身份证信息读取(vfp8.0)

    1、表单界面,身份证信息保存在dbf表中,供vfp应用使用,可导出为xls电子表格。 2、提供了身份证过期校验和查询功能。

    人事行政主管绩效考核评分表.xls

    人事行政主管绩效考核评分表

    08 -大堂副理绩效考核表1.xlsx

    08 -大堂副理绩效考核表1

    apr-1.4.8-7.el7.x64-86.rpm.tar.gz

    1、文件内容:apr-1.4.8-7.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/apr-1.4.8-7.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    ComponentNameError解决办法.md

    ComponentNameError解决办法.md

Global site tag (gtag.js) - Google Analytics