Web

SVG绘制图形

2019-11-13  本文已影响0人  追逐_chase
web.jpeg

图片的认知

SVG 标签绘制矢量图

SVG 绘制直线

<svg>
    <line x1="100" y1="100" x2="100" y2="400" stroke="#ccc"></line>
</svg>

SVG 绘制直线折线

<svg>
 <polyline points="100 100 300 100 300 300" stroke="#000" fill="none"></polyline>
</svg>

SVG 绘制多边形

<svg>
 <polygon points="100 100 300 100 300 300" stroke="red"></polygon>
</svg>

SVG 绘制矩形

<svg>
  <rect x="100" y="100" width="100" height="100" fill="red" stroke="blue" stroke-width="10" rx="10"></rect>
</svg>

SVG 绘制圆和椭圆

<svg>
    <rect x="100" y="100" width="100" height="100" fill="red" stroke="blue"  rx="50"></rect>
</svg>
<svg>
  
  
    <!--绘制圆-->
    <circle cx="100" cy="100" r="50"></circle>

    <!--绘制椭圆-->
    <ellipse cx="200" cy="200" rx="100"  ry="50"></ellipse>


</svg>

SVG中一些常用的属性
fill: 修改填充颜色
fill-opacity: 0~1 设置填充颜色的透明度
stroke: 修改描边颜色
stroke-width: 修改描边宽度
stroke-opacity: 0~1 设置描边透明度
stroke-linecap: butt/square/round 设置线段两端帽子
stroke-dasharray: 设置虚线
stroke-dashoffset:设置虚线偏移位
stroke-linejoin: miter/bevel/round设置折线转角样式

SVG绘制路径

<svg>

    <!--绘制路径直线-->
  <path d="M 100 100 L 200 100" stroke="red"></path>

    <!--绘制折线-->
    <path d="M 50 50 L 300 100 L 300 300" stroke="blue" fill="none"></path>

    <!-- 关闭路径-->
    <path d="M 70 70 L 210 200 L 210 70 Z" stroke="red" fill="none"></path>

    <!---->

    <path d="M 50 250 H 200 V 70 Z" stroke="blue" fill="none"></path>

</svg>

image.png

SVG绘制圆弧

A(rx, ry, xr, laf, sf, x, y) 从当前位置绘制弧线到指定位置

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

    
    <path d="M 100 100 A 100 50 0 1 0 200 150" stroke="red" fill="none"></path>

</svg>

image.png

SVG 贝塞尔曲线

Q(x1, y1, x, y) 从当前位置绘制二阶贝塞尔曲线到指定位置

C = curveto

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

    <!--二阶贝塞尔-->
    <path d="M 100 300 Q 150 50 300 300" stroke="red" stroke-width="5" fill="none"></path>

    <!--三界贝塞尔-->

    <path d="M100 140 C 100 50 250 150 260 100" stroke="red" stroke-width="5" fill="none"></path>
</svg>
image.png

SVG绘制文字

svg是以做下角作为参考,默认的文字的基线和指定的位置对齐

<svg width="500" height="500">
    <line x1="250" y1="0" x2="250" y2="500" stroke="red" ></line>
    <line x1="0" y1="250" x2="500" y2="250" stroke="red" ></line>

    <text x="250" y="250" style="font-size: 40px;" text-anchor="start" dx="10 20">掠食龙</text>
    <!--
     text-anchor: 是以位置点 为参考
     start:文字开始的位置在 绘制点
     end:文字结束的位置在 绘制点
     middle:文字中的位置 在绘制点

    -->

</svg>
image.png

SVG绘制文字路径

<svg width="500" height="500">
    <!--定义文本的绘制路径-->
    <defs>
        <path id="textPath" d="M 100 100 Q 150 50 200 100" stroke="red" fill="none"></path>

    </defs>>
    <!--绘制文字-->
    <text>
        <!--文字路劲-->
        <textPath xlink:href="#textPath">这是一个绘制的文字按照路径绘制123</textPath>
    </text>



</svg>
image.png

SVG绘制超链接

<svg width="500" height="500" >
    <a xlink:href="http://www.baidu.com" xlink:title="官网" target="_blank">
        <!--文字-->
        <text x="100" y="100">百度爷爷</text>
        <!--图形-->
        <circle cx="200" cy="200" r="50" fill="red" ></circle>

    </a>
</svg>

SVG线性渐变

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

    <!--百分比渐变-->
    <linearGradient id="myline" x1="0" y1="0" x2="1" y2="1" gradientUnits="objectBoundingBox">
        <stop offset="0" stop-color="red"></stop>
        <stop offset="1" stop-color="green"></stop>
    </linearGradient>

    <!--访问-->
    <rect x="100" y="100" width="300" height="100" fill="url(#myline)"></rect>


    <!--像素渐变-->

    <linearGradient id="mypx" x1="200" y1="200" x2="400" y2="200" gradientUnits="userSpaceOnUse">
        <stop offset="0" stop-color="red"></stop>
        <stop offset="1" stop-color="green"></stop>
    </linearGradient>

    <!--绘制矩形-->
    <rect x="100" y="260" width="300" height="100" fill="url(#mypx)"></rect>



</svg>
image.png

SVG绘制图片

<svg>
    <image xlink:href="images/1.gif"></image>
</svg>

上一篇 下一篇

猜你喜欢

热点阅读