SVG绘制图形

SVG和CANVAS

  • SVG - 实际开发中,多用SVG

      不依赖分辨率
      支持事件处理器
      不适合游戏
      大型渲染区域的程序(例如,百度地图)
    
  • Canvas

       依赖分辨率
       不支持事件绑定
       最适合网页游戏
       可以用图片格式保存图像
    

绘制图形

*创建 <svg></svg>
类似于canvas元素,但可以使用css样式,使用svg绘制图形,必须定义svg元素中

  • 矩形
    <rect id="rect" x="100" y="100" width="200" height="150" fill="red" stroke="green" stroke-width="5"></rect>


  • <circle cx="50" cy="50" r="50" fill="red"></circle>

  • 椭圆
    <ellipse cx="200" cy="50" rx="100" ry="50" fill="orange"></ellipse>

  • 直线
    <line x1="0" y1="0" x2="400" y2="400" stroke="white"></line>

  • 折线
    <polyline points="100,20 20,100 200,200 100,20" stroke="green" stroke-width="10" fill="pink"></polyline>

    <polygon points="100,20 20,100 200,200 100,20" stroke="green" stroke-width="10" fill="pink"></polygon>
    

注意:通过js设置序号属性是无效的,因为这些只读属性

SVG渐变

  • 创建 <svg></svg>
  • 在svg里追加defs元素
    <svg>
    <defs></defs>
    </svg>
  • 在defs里追加linearGradient元素
    <linearGradient x1="" y1="" x2="" y2=""></linearGradient>
    注意: 这四个值都是百分比
  • 在linearGradient里面追加stop元素
    <stop offset="" stop-color="" stop-opacity="">
    <stop offset="" stop-color="">
    offset: 值为百分比
    stop-color:设置渐变颜色
    stop-opacity:设置渐变颜色的透明度
  • 在defs下面追加<rect>,画出图形,并将上面设置的线性渐变,添加到矩形中
    使用fill属性,值为url(#渐变元素的id值)
    <rect x="0" y="0" width="400" height="400" fill="url(#def)">
  • 扇形渐变radialGradient,参考线性渐变

SVG高斯模糊效果

 <svg width="500" height="500"> 
   <defs> 

      <filter id="Gaussian_Blur"> 

            //fegaussianblur- 高斯模糊,stdDeviation - 设置模糊程度 
            <feGaussianBlur in="SourceGraphic" stdDeviation="3" /> 

      </filter>
   </defs>

   <rect x="0" y="0" width="400" height="400" filter="url(#def)">
 </svg>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容