码迷,mamicode.com
首页 > 其他好文 > 详细

使用SVG画猫咪

时间:2015-03-22 09:17:05      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:svg

SVG画简易小猫咪:

第一幅图是别人的,图2是自己画的

技术分享技术分享

-----------------------------分割线----------------------------

代码部分:

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8" />  
    <title>好玩的SVG---可爱的小猫咪</title>  
</head>  
<body>  
<!--SVG-小猫咪-->  
<svg width="200" height="200">  
        <title>Cat</title>  
        <desc>Stick Figure of a Cat</desc>  
        <!--画猫咪脸轮廓-->  
        <circle cx="100" cy="95" r="50" style="stroke: black; fill: none;" />  
        <!--画猫咪脸两只眼睛-->  
        <circle cx="85" cy="80" r="5" stroke="black" fill="#008B8B" />  
        <circle cx="115" cy="80" r="5" stroke="black" fill="#008B8B" />  
        <!--画出右侧胡子,折线-->  
        <g id="whiskers">  
            <line x1="105" y1="95" x2="165" y2="85" style="stroke: black;" />  
            <line x1="105" y1="95" x2="165" y2="105" style="stroke: black;" />  
        </g>  
        <!--根据右侧胡子画左侧胡子-->  
        <use xlink:href="#whiskers" transform="scale(-1 1) translate(-200 0)" />  
        <!-- ears -->  
        <polyline points="138 62, 150 10, 100 45, 50 10, 62, 62"  
                  style="stroke: black; fill: none;" />  
        <!-- mouth1 -->  
        <!--  
        <polyline points="65 110, 75 120, 125 120, 135, 110"  
                  style="stroke: black; fill: none;" />  
        -->  
         <!-- mouth2 -->  
        <path d="M70 115 C95 130,110 130,130 115" fill="none" stroke="blue" stroke-width="5"/>          
        <!-- nose -->  
        <path d="M 105 90 L 95 90 A 5 10 0 0 0 105 90"  
              style="stroke: black; fill: #ffcccc" />  
    </svg>  
</body>  
</html>  


说明:

下面是每个形状的使用说明(这里只介绍控制图形形状和位置的基本属性,填充等属性放到后面总结)。


矩形 - rect元素
这个元素有6个控制位置和形状的属性,分别是:
x:矩形左上角的坐标(用户坐标系)的x值。
y:矩形左上角的坐标(用户坐标系)的y值。
width:矩形宽度。
height:矩形高度。
rx:实现圆角效果时,圆角沿x轴的半径。
ry:实现圆角效果时,圆角沿y轴的半径。
比如上面例子中,实现了圆角效果,你也可以通过设置rx,ry为不同的值实现椭圆角效果。


圆 - circle元素
这个元素的属性很简单,主要是定义圆心和半径:
r:圆的半径。
cx:圆心坐标x值。
cy:圆心坐标y值。


<span style="color:#cc0000;">椭圆 - ellipse元素</span>
这个是更加通用的圆形元素,你可以分别控制半长轴和半短轴的长度,来实现不同的椭圆,很容易想到,当两个半轴相等时,就是正圆形了。
rx:半长轴(x半径)。
ry:半短轴(y半径)。
cx:圆心坐标x值。
cy:圆心坐标y值。


直线 - line元素
直线需要定义起点与终点即可:
x1:起点x坐标。
y1:起点y坐标。
x2:终点x坐标。
y2:终点y坐标。


折线 - polyline元素
折线主要是要定义每条线段的端点即可,所以只需要一个点的集合作为参数:
points:一系列的用空格,逗号,换行符等分隔开的点。每个点必须有2个数字:x值和y值。所以下面3个点 (0,0), (1,1)和(2,2)可以写成:"0 0, 1 1, 2 2"。


多边形 - polygon元素
这个元素就是比polyline元素多做一步,把最后一个点和第一个点连起来,形成闭合图形。参数是一样的。
points:一系列的用空格,逗号,换行符等分隔开的点。每个点必须有2个数字:x值和y值。所以下面3个点 (0,0), (1,1)和(2,2)可以写成:"0 0, 1 1, 2 2"。


路径 - path元素
这个是最通用,最强力的元素了;使用这个元素你可以实现任何其他的图形,不仅包括上面这些基本形状,也可以实现像贝塞尔曲线那样的复杂形状;此外,使用path可以实现平滑的过渡线段,虽然也可以使用polyline来实现这种效果,但是需要提供的点很多,而且放大了效果也不好。这个元素控制位置和形状的只有一个参数:
d:一系列绘制指令和绘制参数(点)组合成。


绘制指令分为绝对坐标指令和相对坐标指令两种,这两种指令使用的字母是一样的,就是大小写不一样,绝对指令使用大写字母,坐标也是绝对坐标;相对指令使用对应的小写字母,点的坐标表示的都是偏移量。 


绝对坐标绘制指令:
这组指令的参数代表的是绝对坐标。假设当前画笔所在的位置为(x0,y0),则下面的绝对坐标指令代表的含义如下所示:

指令 参数 说明
M x y 将画笔移动到点(x,y)
L x y 画笔从当前的点绘制线段到点(x,y)
H x 画笔从当前的点绘制水平线段到点(x,y0)
V y 画笔从当前的点绘制竖直线段到点(x0,y)
A rx ry x-axis-rotation large-arc-flag sweep-flag x y画笔从当前的点绘制一段圆弧到点(x,y)
C x1 y1, x2 y2, x y画笔从当前的点绘制一段三次贝塞尔曲线到点(x,y)
S x2 y2, x y 特殊版本的三次贝塞尔曲线(省略第一个控制点)
Q x1 y1, x y 绘制二次贝塞尔曲线到点(x,y)
T x y 特殊版本的二次贝塞尔曲线(省略控制点)
Z 无参数 绘制闭合图形,如果d属性不指定Z命令,则绘制线段,而不是封闭图形。
总结:
移动画笔指令M,画直线指令:L,H,V,闭合指令Z都比较简单;下面重点看看绘制曲线的几个指令。


 附链接: http://www.tuicool.com/articles/Jzmaeq




使用SVG画猫咪

标签:svg

原文地址:http://blog.csdn.net/tto_ott/article/details/44521733

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!