ITPub博客

首页 > 应用开发 > XML/XSL > SVG画图

SVG画图

原创 XML/XSL 作者:as507169008 时间:2018-09-14 10:00:49 0 删除 编辑

SVG 意为可缩放矢量图形(Scalable Vector Graphics)。

SVG 使用 XML 格式定义图像。

::::::::::::::::::::::::::::::::::::::

SVG 简介

SVG 是使用 XML 来描述二维图形和绘图程序的语言。

。。。。。。

什么是SVG?

SVG 指可伸缩矢量图形 (Scalable Vector Graphics)

http:/ /www.iis7.com/a/lm/zzxzgj/

SVG 用来定义用于网络的基于矢量的图形

SVG 使用 XML 格式定义图形

SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失

SVG 是万维网联盟的标准

SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体

。。。。。。

SVG 是 W3C 推荐标准

SVG 于 2003 年 1 月 14 日成为 W3C 推荐标准。

。。。。。。

SVG 的历史和优势

在 2003 年一月,SVG 1.1 被确立为 W3C 标准。

参与定义 SVG 的组织有:Sun公司(已被Oracle公司收购)、Adobe、苹果公司、IBM 以及柯达。

与其他图像格式相比,使用 SVG 的优势在于:

SVG 可被非常多的工具读取和修改(比如记事本)

SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。

SVG 是可伸缩的

SVG 图像可在任何的分辨率下被高质量地打印

SVG 可在图像质量不下降的情况下被放大

SVG 图像中的文本是可选的,同时也是可搜索的(很适合制作地图)

SVG 可以与 Java 技术一起运行

SVG 是开放的标准

SVG 文件是纯粹的 XML

SVG 的主要竞争者是 Flash。

与 Flash 相比,SVG 最大的优势是与其他标准(比如 XSL 和 DOM)相兼容。而 Flash 则是未开源的私有技术。

。。。。。。

查看 SVG 文件

Internet Explorer9,火狐,谷歌Chrome,Opera和Safari都支持SVG。

IE8和早期版本都需要一个插件 - 如Adobe SVG浏览器,这是免费提供的。

。。。。。。

创建SVG文件

由于SVG是XML文件,SVG图像可以用任何文本编辑器创建,但它往往是与一个绘图程序一起使用,如Inkscape,更方便地创建SVG图像。

::::::::::::::::::::::::::::::::::::::

SVG 实例

简单的 SVG 实例

一个简单的SVG图形例子:

这里是SVG文件(SVG文件的保存与SVG扩展):

<?xml version="1.0" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 

"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">


<svg xmlns="http://www.w3.org/2000/svg" version="1.1">

  <circle cx="100" cy="50" r="40" stroke="black"

  stroke-width="2" fill="red" />

</svg>

SVG 代码解析:

第一行包含了 XML 声明。请注意 standalone 属性!该属性规定此 SVG 文件是否是"独立的",或含有对外部文件的引用。

standalone="no" 意味着 SVG 文档会引用一个外部文件 - 在这里,是 DTD 文件。

第二和第三行引用了这个外部的 SVG DTD。该 DTD 位于 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"。该 DTD 位于 W3C,含有所有允许的 SVG 元素。

SVG 代码以 <svg> 元素开始,包括开启标签 <svg> 和关闭标签 </svg> 。这是根元素。width 和 height 属性可设置此 SVG 文档的宽度和高度。version 属性可定义所使用的 SVG 版本,xmlns 属性可定义 SVG 命名空间。

SVG 的 <circle> 用来创建一个圆。cx 和 cy 属性定义圆中心的 x 和 y 坐标。如果忽略这两个属性,那么圆点会被设置为 (0, 0)。r 属性定义圆的半径。

stroke 和 stroke-width 属性控制如何显示形状的轮廓。我们把圆的轮廓设置为 2px 宽,黑边框。

fill 属性设置形状内的颜色。我们把填充颜色设置为红色。

关闭标签的作用是关闭 SVG 元素和文档本身。

注释:所有的开启标签必须有关闭标签!

:::::::::::::::::::::::::::::::::::::::::

SVG 在 HTML 页面

SVG 文件可通过以下标签嵌入 HTML 文档:<embed>、<object> 或者 <iframe>。

SVG的代码可以直接嵌入到HTML页面中,或您可以直接链接到SVG文件。

。。。。。。

使用 <embed> 标签

<embed>:

优势:所有主要浏览器都支持,并允许使用脚本

缺点:不推荐在HTML4和XHTML中使用(但在HTML5允许)

语法: <embed src="circle1.svg" type="image/svg+xml" />

。。。。。。

使用 <object> 标签

<object>:

优势:所有主要浏览器都支持,并支持HTML4,XHTML和HTML5标准

缺点:不允许使用脚本。

语法 :<object data="circle1.svg" type="image/svg+xml"></object>

。。。。。。

使用 <iframe> 标签

<iframe>:

优势:所有主要浏览器都支持,并允许使用脚本

缺点:不推荐在HTML4和XHTML中使用(但在HTML5允许)

语法: <iframe src="circle1.svg"></iframe>

。。。。。。

直接在HTML嵌入SVG代码

在Firefox、Internet Explorer9、谷歌Chrome和Safari中,你可以直接在HTML嵌入SVG代码。

。。。。。。

链接到SVG文件

您还可以用<a>标签链接到一个SVG文件:链接到SVG文件

您还可以用<a>标签链接到一个SVG文件:<a href="circle1.svg"></a>

:::::::::::::::::::::::::::::::::::::::::::

SVG Shapes(形状)

SVG有一些预定义的形状元素,可被开发者使用和操作:

矩形 <rect>

圆形 <circle>

椭圆 <ellipse>

线 <line>

折线 <polyline>

多边形 <polygon>

路径 <path>

:::::::::::::::::::::::::::::::::::::::::

SVG 矩形 - <rect>

<rect> 标签可用来创建矩形,以及矩形的变种

rect 元素的 width 和 height 属性可定义矩形的高度和宽度

style 属性用来定义 CSS 属性

CSS 的 fill 属性定义矩形的填充颜色(rgb 值、颜色名或者十六进制值)

CSS 的 stroke-width 属性定义矩形边框的宽度

CSS 的 stroke 属性定义矩形边框的颜色

x 属性定义矩形的左侧位置(例如,x="0" 定义矩形到浏览器窗口左侧的距离是 0px)

y 属性定义矩形的顶端位置(例如,y="0" 定义矩形到浏览器窗口顶端的距离是 0px)

CSS 的 fill-opacity 属性定义填充颜色透明度(合法的范围是:0 - 1)

CSS 的 stroke-opacity 属性定义轮廓颜色的透明度(合法的范围是:0 - 1)

rx 和 ry 属性可使矩形产生圆角。

:::::::::::::::::::::::::::::::::::::::::::::::

SVG 圆形 - <circle>

<circle> 标签可用来创建一个圆

cx和cy属性定义圆点的x和y坐标。如果省略cx和cy,圆的中心会被设置为(0, 0)

r属性定义圆的半径

::::::::::::::::::::::::::::::::::::::::::::::

SVG <ellipse>

SVG 椭圆 - <ellipse>

<ellipse> 元素是用来创建一个椭圆:

椭圆与圆很相似。不同之处在于椭圆有不同的x和y半径,而圆的x和y半径是相同的

CX属性定义的椭圆中心的x坐标

CY属性定义的椭圆中心的y坐标

RX属性定义的水平半径

RY属性定义的垂直半径

::::::::::::::::::::::::::::::::::::::::::::::

SVG 直线 - <line>

<line> 元素是用来创建一个直线

x1 属性在 x 轴定义线条的开始

y1 属性在 y 轴定义线条的开始

x2 属性在 x 轴定义线条的结束

y2 属性在 y 轴定义线条的结束

:::::::::::::::::::::::::::::::::::::::::::::

SVG 多边形 - <polygon>

<polygon> 标签用来创建含有不少于三个边的图形。

多边形是由直线组成,其形状是"封闭"的(所有的线条 连接起来)。

polygon来自希腊。 "Poly" 意味 "many" , "gon" 意味 "angle".

points 属性定义多边形每个角的 x 和 y 坐标

:::::::::::::::::::::::::::::::::::::::::::::

SVG 曲线 - <polyline>

<polyline> 元素是用于创建任何只有直线的形状

::::::::::::::::::::::::::::::::::::::::::::::

SVG 路径 - <path>

<path> 元素用于定义一个路径。

下面的命令可用于路径数据:

M = moveto

L = lineto

H = horizontal lineto

V = vertical lineto

C = curveto

S = smooth curveto

Q = quadratic Bézier curve

T = smooth quadratic Bézier curveto

A = elliptical Arc

Z = closepath

注意:以上所有命令均允许小写字母。大写表示绝对定位,小写表示相对定位。

::::::::::::::::::::::::::::::::::::::::::::::::

SVG 文本 - <text>

<text> 元素用于定义文本。

:::::::::::::::::::::::::::::::::::::::::::::::

SVG Stroke 属性

SVG提供了一个范围广泛stroke 属性。下面:

stroke

stroke-width

stroke-linecap

stroke-dasharray

所有stroke属性,可应用于任何种类的线条,文字和元素就像一个圆的轮廓。

。。。。。。

SVG stroke 属性

Stroke属性定义一条线,文本或元素轮廓颜色

。。。。。。

SVG stroke-width 属性

Tstroke- width属性定义了一条线,文本或元素轮廓厚度

。。。。。。

SVG stroke-linecap 属性

strokelinecap属性定义不同类型的开放路径的终结

。。。。。。

SVG stroke-dasharray 属性

stroke-dasharray属性用于创建虚线

:::::::::::::::::::::::::::::::::::::::::::::::::::::

SVG 滤镜

SVG滤镜用来增加对SVG图形的特殊效果。

SVG 滤镜

在本教程中,我们将仅展示一个可能采用的特殊效果。基础知识展示后,你已经学会使用特殊效果,你应该能够适用于其他地方。这里的关键是给你一个怎样做SVG的想法,而不是重复整个规范。

SVG可用的滤镜是:

feBlend - 与图像相结合的滤镜

feColorMatrix - 用于彩色滤光片转换

feComponentTransfer

feComposite

feConvolveMatrix

feDiffuseLighting

feDisplacementMap

feFlood

feGaussianBlur

feImage

feMerge

feMorphology

feOffset - 过滤阴影

feSpecularLighting

feTile

feTurbulence

feDistantLight - 用于照明过滤

fePointLight - 用于照明过滤

feSpotLight - 用于照明过滤

除此之外,您可以在每个 SVG 元素上使用多个滤镜!

::::::::::::::::::::::::::::::::::::::::::::

SVG 模糊效果

注意: Internet Explorer和Safari不支持SVG滤镜!

<defs> 和 <filter>

所有互联网的SVG滤镜定义在<defs>元素中。<defs>元素定义短并含有特殊元素(如滤镜)定义。

<filter>标签用来定义SVG滤镜。<filter>标签使用必需的id属性来定义向图形应用哪个滤镜?

<filter>元素id属性定义一个滤镜的唯一名称

<feGaussianBlur>元素定义模糊效果

in="SourceGraphic"这个部分定义了由整个图像创建效果

stdDeviation属性定义模糊量

<rect>元素的滤镜属性用来把元素链接到"f1"滤镜


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31552074/viewspace-2214165/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2018-09-14

  • 博文量
    144
  • 访问量
    50546