新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     >>计算机科学论坛<<     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论SVG, GML, X3D, VRML, VML, XAML, AVALON, Batik等基于XML的图形技术,以及有关GIS的应用。
    [返回] 计算机科学论坛XML.ORG.CN讨论区 - 高级XML应用『 SVG/GML/VRML/X3D/XAML 』 → 本人整理的一些关于svg的知识点 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 6895 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 本人整理的一些关于svg的知识点 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     求索 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:14
      积分:171
      门派:W3CHINA.ORG
      注册:2006/1/6

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给求索发送一个短消息 把求索加入好友 查看求索的个人资料 搜索求索在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看求索的博客楼主
    发贴心情 本人整理的一些关于svg的知识点

    从本质上来说,SVG 文档是 XML 文档。这就是说 SVG 文档有某些基本属性:
    1.所以的标记都有开始标记和结束标记,否则必须注明为空标记。空标记用反斜杠结束,如<rect />。
    2.标记必须正确嵌套。 如果一个标记在另一个标记中开始,那么它也必须在那个标记中结束。例如,<g><text>Hello there!</text></g> 是正确的,但 <g><text>Hello there!</g></text> 不正确。
    3.文档必须只有一个根。正如一个 <html></html> 元素包含了一个 HTML 页面的所有内容一样,一个 <svg></svg> 元素也包含一个 SVG 文档的所有内容。
    4.文档应该以 XML 声明<? xml version=”1.0”  ?>开始。
    5.文档应该包含一个 DOCTYPE 声明, 该声明指向一个允许元素的列表。SVG 1.0 文档的 DOCTYPE 声明是:

    <?xml version="1.0"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
      "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">

    基本svg形状
    每个基本形状都带有指定其位置和大小的属性。它们的颜色和轮廓分别由 fill 和 stroke 属性确定。这些形状是:
    1.圆(circle):显示一个圆心在指定点、半径为指定长度的标准的圆。
    2.椭圆(ellipse):显示中心在指定点、长轴和短轴半径为指定长度的椭圆。
    3.矩形(rect):显示左上角在指定点并且高度和宽度为指定值的矩形(包括正方形)。也可以通过指定边角圆的 x 和 y 半径画成圆角矩形。
    4.线(line):显示两个坐标之间的连线。
    5.折线(polyline):显示顶点在指定点的一组线。
    6.多边形(polygon):类似于 polyline,但增加了从最末点到第一点的连线,从而创建了一个闭合形状。
    下面的示例演示了这些形状:

    <?xml version="1.0"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
      "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
    <svg width="400" height="200" xmlns="http://www.w3.org/2000/svg">
        <desc>Basic shapes</desc>
        <g>
        <circle cx="50" cy="50" r="25" />
        <ellipse cx="75" cy="125" rx="50" ry="25" />
        <rect x="155" y="5" width="75" height="100"/>
        <rect x="250" y="5" width="75" height="100" rx="30" ry="20" />
        <line x1="0" y1="150" x2="400" y2="150"
                             stroke-width="2" stroke="blue"/>
        <polyline points="50,175 150,175 150,125 250,200" />
        <polygon points="350,75 379,175 355,175 355,200 345,200
                                          345,175 321,175" />
        <rect x="0" y="0" width="400" height="200"
                fill="none" stroke="red" stroke-width="3" />
      </g>
    </svg>

    渲染顺序
    当组合多种不同元素时,正象 SVG 图像一样,重要的是牢记各项在页面上的放置顺序,因为这关系到谁“在上面”出现。在一个 HTML 页面上,使用z-index属性来控制这一分层效果,而对于 SVG 图像,则严格按顺序放置各项。每个后继层放置在那些已放置层的上面。
    如果指定一个元素没有填充色(使用fill=”none”"),那么在它下面的各项会显现出来。


    属性:
    fill:该属性指定用来填充对象内部区域的颜料。大多数情况下,该属性只是一种颜色,但它也可以是渐变或图案(会在图案中介绍)。这个值通常是关键字、颜色说明或指向预定义元素的 URI。
    fill-opacity:该属性指定元素的透明性。值的范围从完全透明(0)到完全不透明(1)。
    stroke:该属性指定元素外边框的外观。象 fill 一样,它引用颜料,尽管通常将它指定为一种简单颜色。
    stroke-width:该属性指定笔划线的宽度。
    stroke-linecap:该属性确定线末端的形状,可取的值有粗端(缺省值)、圆和正方形。
    stroke-linejoin:该属性确定对象各角的外观。允许的值有直角(缺省值)、圆和斜角,它如示例中所示将尖角的边缘“剪掉”。
    stroke-dasharray:该属性是一个整数系列(如 3、2、3、2、4、3、2 和 3),它允许对虚线中每一划的相对长度进行控制。
    stroke-opacity:类似于 fill-opacity,该属性确定元素笔划线的相对透明性。

    您可以在下面看到这些属性的一些示例:
    <?xml version="1.0"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
      "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
    <svg width="400" height="200" xmlns="http://www.w3.org/2000/svg"
                          xmlns:xlink="http://www.w3.org/1999/xlink">
       <desc>Stroke and fill</desc>
      <defs>
        <!--渐变-->
         <linearGradient id="lineGradient">
            <stop offset="0%" stop-color="red" />
            <stop offset="100%" stop-color="yellow" />
         </linearGradient>
         
             <polygon id="lens" points="65,50 185,50 185,75, 150,100
                                              100,100 65,75"
                 fill="pink" stroke="purple" stroke-width="4"
                 fill-opacity=".5"/>
    . . .
      </defs>
       <g>
    . . .
            <line x1="65" y1="50" x2="310" y2="50"
                              stroke="plum" stroke-width="2"/>    
          <!-- Box with gradient along the outside -->                      
        <rect x="50" y="125" width="275" height="40" fill="orange"
               stroke-width="6" stroke="url(#lineGradient)" />

        <!-- Purple line with rounded edges -->
        <line x1="65" y1="190" x2="310" y2="190"
                              stroke="purple" stroke-width="20"
                              stroke-linecap="round"/>  
         <!-- Blue polygon with beveled corners -->                          
        <polygon points="50,250 100,225 300,225 200,275" stroke="blue"
              fill="none" stroke-width="10" stroke-linejoin="bevel" />
          </g>
    </svg>

    路径是一系列命令,用来创建作为图像一部分精确定义的形状。该形状可以是开放的(如线)或闭合的(如多边形),并可以包含一条或多条线、曲线和线段。

    最基本的路径由几条线段组成。例如:

    <?xml version="1.0" standalone="no"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
      "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
    <svg width="400" height="400"
         xmlns="http://www.w3.org/2000/svg">
      <desc>A simple path</desc>
      <rect x="1" y="1" width="350" height="350"
            fill="none" stroke="blue" />
      <path d="M 100 100 L 300 50 L 300 250 L 100 300 Z"
            fill="red" stroke="blue" stroke-width="3" />
    </svg>

    上述代码根据提供的指令生成一个简单的多边形。这些指令如下所示:

    M 100 100 :移至点 100, 100。
    L 300 50 :画一条线至点 300, 50。
    L 300 250 :画一条线至点 300, 250。
    L 100 300 :画一条线至点 100, 300。
    Z :通过将线画回到原始点闭合此形状。(更具体地说,回到最近一条“move”命令所指定的点。)
    其它简单的线命令包括作水平线的 H (或 h)和作垂直线的 V (或 v)。


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/1/6 15:56:00
     
     xmshaonian 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究汇编)
      文章:49
      积分:276
      门派:XML.ORG.CN
      注册:2005/3/23

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给xmshaonian发送一个短消息 把xmshaonian加入好友 查看xmshaonian的个人资料 搜索xmshaonian在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看xmshaonian的博客2
    发贴心情 
    请问楼主,怎么样实现给直线加箭头时,箭头的顶端与线条的顶端对齐呢?
    因为在正常对齐的情况下,线条的未端是扁平的,所以显示不尖
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/1/11 13:52:00
     
     行云流水 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:11
      积分:95
      门派:XML.ORG.CN
      注册:2005/3/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给行云流水发送一个短消息 把行云流水加入好友 查看行云流水的个人资料 搜索行云流水在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看行云流水的博客3
    发贴心情 
    好久没编这些图了,支持一个
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/1/17 10:51:00
     
     keeponline 美女呀,离线,快来找我吧!天秤座1975-10-21
      
      
      威望:4
      等级:大四寒假(收到IBM的Offer啦)
      文章:190
      积分:1150
      门派:W3CHINA.ORG
      注册:2005/1/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给keeponline发送一个短消息 把keeponline加入好友 查看keeponline的个人资料 搜索keeponline在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看keeponline的博客4
    发贴心情 
    不错

    ----------------------------------------------
    买书不等于读书,读书不一定要买书。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/1/17 11:19:00
     
     snowflying 美女呀,离线,快来找我吧!
      
      
      等级:大一新生
      文章:4
      积分:73
      门派:XML.ORG.CN
      注册:2006/1/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给snowflying发送一个短消息 把snowflying加入好友 查看snowflying的个人资料 搜索snowflying在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看snowflying的博客5
    发贴心情 
    挺好的
    支持一下
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/1/18 11:12:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/7/19 11:10:12

    本主题贴数5,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    109.375ms