# Scalable Vector Graphics - Polygon

## Introduction

This is used to draw a closed shape by connecting multiple straight lines.

Now let's move forward to understanding SVG polygons.

## SVG Polygon

The tag <polygon> is used to draw various polygon shapes by connecting multiple straight lines like a polyline, but with the difference that a polyline draws open structures and a polygon draws closed structures.

In other words, it draws graphics or polygons that are closed (all lines are connected to each other) and that should contain at least three sides to be closed.

Note: When we use three coordinates to draw a shape by a polyline, it only draws two straight lines depending on the given coordinates but if we draw by a polygon then it automatically adds or connects one additional straight line to close the shape.

Like polyline, it also has the attribute “points” which is the list of points to make up the polygons.

Let's see a few examples to understand it properly.

Example 1

Polygons of a minimum of three sides, four sides, and five sides.
1. <html>
2.     <body>
3.         <svg height="250" width="500">
4.             <polygon points="20,20 100,180 130,100" style="fill:cyan;stroke:blue;stroke-width:2" />
5.             <polygon points="130,180 200,140 250,80 230,20" style="fill:pink;stroke:red;stroke-width:2" />
6.             <polygon points="280,20 300,100 350,120 380,60 450,20" style="fill:#cccc00;stroke:purple;stroke-width:2" />
7.         </svg>
8.     </body>
9. </html>
Output

Example 2

Polygons with strokes and opacity.
1. <html>
2.     <body>
3.         <svg height="300" width="600">
4.             <polygon points="20,50 20,110 60,130 100,110 100,50 60,30" style="fill:yellow;stroke:blue;stroke-width:3; stroke-opacity:0.5" />
5.             <polygon points="120,50 120,120 150,150 210,150 240,120 240,50 180,20 " style="fill:blue;stroke:red;stroke-width:3; fill-opacity:0.5" />
6.             <polygon points="260,50 260,130 300,170 360,170 400,130 400,50 360,10 300,10" style="fill:red;stroke:black;stroke-width:3; fill-opacity:0.5 ; stroke-opacity:0.5; stroke-dasharray:10 5" />
7.         </svg>
8.     </body>
9. </html>
Output

Example 3

Star polygon.
1. <html>
2.     <body>
3.         <svg height="300" width="600">
4.             <polygon points="100,10 40,198 190,78 10,78 160,198" style="fill:grey;stroke:blue;stroke-width:5; stroke-opacity:0.5" />
5.             <polygon points="220,90 300,90 330,10 360,90 440,90 380,150 410,230 335,190 255,235 285,150 "
6. style="fill:lightgreen;stroke:green;stroke-width:3; fill-opacity:0.7; stroke-dasharray:10 3" />
7.         </svg>
8.     </body>
9. </html>
Output

Example 4

Polygon with fill-rule properties “evenodd” & “nonzero”.
1. <html>
2.     <body>
3.         <svg height="300" width="600">
4.             <polygon points="100,10 40,198 190,78 10,78 160,198" style="fill:orange;stroke:blue;stroke-width:5; stroke-opacity:0.5; fill-rule:evenodd" />
5.             <polygon points="250,110 320,10 390,110 320,210" style="fill:lightgreen;stroke:green;stroke-width:3; fill-opacity:0.7; fill-rule:nonzero" />
6.             <polygon points="280,110 320,50 360,110 320,170" style="fill:white;stroke:green;stroke-width:3; fill-opacity:0.5; fill-rule:nonzero; stroke-dasharray:10 5" />
7.         </svg>
8.     </body>
9. </html>
Output

By applying the preceding property, the crossing area gets unfilled by “evenodd” and the separate area is unfilled by “nonzero”.

If you want to read more.

Thank you, keep learning and sharing.