效果圖:

<body>
<canvas id="square" width="500"></canvas>
<canvas id="circle"></canvas>
<script type="text/javascript">
function polygon(c,n,x,y,r,angle,counterclockwise){
angle = angle || 0;
counterclockwise = counterclockwise ||false;
c.moveTo(x+r*Math.sin(angle), //從第一個頂點開始一條新的子路徑
y-r*Math.cos(angle)); //使用三角法計算位置
var delta = 2*Math.PI/n; //兩個頂點之間的夾角
for(var i=1 ; i < n ; i++){ //循環剩余的每個頂點
angle += counterclockwise ? -delta:delta; //調整角度
c.lineTo(x+r*Math.sin(angle), //以下個頂點為端點添加線段
y-r*Math.cos(angle));
}
c.closePath(); //將最后一個頂點和起點連接起來
}
var convas = document.getElementById('square');
var c=convas.getContext("2d");
//開始一個新的路徑並添加一條多邊形子路徑
c.beginPath();
polygon(c,3,50,70,50); //三角形
polygon(c,4,150,60,50,Math.PI/4); //正方形角形
polygon(c,5,255,55,50); //五角形
polygon(c,6,365,53,50,Math.PI/6); //六角形
polygon(c,4,365,53,20,Math.PI/4,true); //六邊形中的小正方形
//設置屬性來控制圖形外觀
c.fillStyle = "#ccc" ; //內部使用淺灰色
c.strokeStyle = "#008"; //深藍色外邊框
c.lineWidth =2; //2個像素寬
//調用如下函數繪制所有這些多邊形(每個分別定義在自己的子路徑中)
c.fill();
c.stroke();
</script>
</body>