SVG 多边形 <polygon>
SVG 中的 <polygon>
元素用于绘制多边形,它是 SVG 中常用的基本形状之一。
使用 <polygon>
元素可以创建闭合的多边形,并可以通过设置属性来控制多边形的顶点坐标、填充颜色、边框颜色等。
基本语法
<polygon points="x1,y1 x2,y2 x3,y3 ..." <!-- 多边形各个顶点的坐标 --> fill="fill-color" <!-- 多边形的填充颜色 --> stroke="stroke-color" <!-- 多边形的边框颜色 --> stroke-width="width" <!-- 多边形的边框宽度 --> />
属性解析:
points
属性定义了多边形各个顶点的坐标,多个顶点的坐标以空格或逗号分隔,并且每对坐标使用逗号分隔。fill
属性定义了多边形的填充颜色。stroke
属性定义了多边形的边框颜色。stroke-width
属性定义了多边形的边框宽度。
以下代码绘制了一个橙色填充、黑色描边、宽度为 2 像素的多边形,其顶点坐标分别为 (100, 10)、(150, 190) 和 (50, 190),形成一个闭合的三角形。
<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg"> <polygon points="100,10 150,190 50,190" fill="orange" stroke="black" stroke-width="2" /> </svg>
实例 1
<polygon> 标签用来创建含有不少于三个边的图形。
多边形是由直线组成,其形状是"封闭"的(所有的线条连接起来)。
polygon来自希腊。 "Poly" 意味 "many" , "gon" 意味 "angle".
下面是 SVG 代码:
实例
<svg height="210" width="500">
<polygon points="200,10 250,190 160,210"
style="fill:lime;stroke:purple;stroke-width:1"/>
</svg>
尝试一下 »
点击查看: 查看 SVG 文件。
代码解析:
- points 属性定义多边形每个角的 x 和 y 坐标
实例 2
下面的示例创建一个四边的多边形:
下面是 SVG 代码:
实例
<svg height="250" width="500">
<polygon points="220,10 300,210 170,250 123,234" style="fill:lime;stroke:purple;stroke-width:1" />
</svg>
尝试一下 »
点击查看: 查看 SVG 文件。
实例 3
使用 <polygon> 元素创建一个星型:
下面是 SVG 代码:
实例
<svg height="210" width="500">
<polygon points="100,10 40,198 190,78 10,78 160,198"
style="fill:lime;stroke:purple;stroke-width:5;fill-rule:nonzero;" />
</svg>
尝试一下 »
点击查看: 查看SVG文件。
实例 4
改变 fill-rule 属性为 "evenodd":
下面是 SVG 代码:
实例
<svg height="210" width="500">
<polygon points="100,10 40,198 190,78 10,78 160,198"
style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" />
</svg>
尝试一下 »
没有水的木
257***1053@qq.com
参考地址
SVG的图形填充规则通过fill-rule属性来指定。
fill-rule
fill-rule 属性用于指定使用哪一种算法去判断画布上的某区域是否属于该图形“内部” (内部区域将被填充)。对一个简单的无交叉的路径,哪块区域是“内部” 是很直观清除的。但是,对一个复杂的路径,比如自相交或者一个子路径包围另一个子路径,“内部”的理解就不那么明确了。
fill-rule 属性提供两种选项用于指定如何判断图形的“内部”:
nonzero
字面意思是“非零”。按该规则,要判断一个点是否在图形内,从该点作任意方向的一条射线,然后检测射线与图形路径的交点情况。从0开始计数,路径从左向右穿过射线则计数加1,从右向左穿过射线则计数减1。得出计数结果后,如果结果是0,则认为点在图形外部,否则认为在内部。下图演示了nonzero规则:
点击查看示例SVG文件 (仅适用于支持SVG的浏览器)
evenodd
字面意思是“奇偶”。按该规则,要判断一个点是否在图形内,从该点作任意方向的一条射线,然后检测射线与图形路径的交点的数量。如果结果是奇数则认为点在内部,是偶数则认为点在外部。下图演示了evenodd 规则:
点击查看示例SVG文件 (仅适用于支持SVG的浏览器)
提示: 上述解释未指出当路径片段与射线重合或者相切的时候怎么办,因为任意方向的射线都可以,那么只需要简单的选择另一条没有这种特殊情况的射线即可。
没有水的木
257***1053@qq.com
参考地址