天天看點

canvas畫旋轉橢圓

要求使用畫布變換方法。

橢圓畫法參照大神佳作:http://web.jobbole.com/82960/

效果如下:

canvas畫旋轉橢圓

代碼如下:

<!DOCTYPE html>
<html>
<head>
	<title>旋轉橢圓</title>
	<meta charset="utf-8">
</head>
<body>
	<canvas id="canvas" width="600" height="600"></canvas>

	<script type="text/javascript">
		var canvas = document.querySelector('#canvas'),
			context = canvas.getContext('2d');

		var width = canvas.width,
			height = canvas.height;

		// 原點坐标
		var originX = width / 2,
			originY = height / 2,
			radius = 100;

		context.lineWidth = 1;

		/* 畫橢圓
		 * x, y表示原點坐标
		 * radiusX, radiusY分别表示x和y軸的半徑
		 */
		function ellipse(x, y, radiusX, radiusY) {
		    context.save();
		    var radius= (radiusX > radiusY) ? radiusX : radiusY;
		    var ratioX = radiusX / radius;
		    var ratioY = radiusY / radius;
		    context.scale(ratioX, ratioY);
		    context.beginPath();
		    context.arc(x / ratioX, y / ratioY, radius, 0, 2 * Math.PI, false);
		    context.restore();
		    context.stroke();
		    context.closePath();
		}

		// 把原點移動到圓心,旋轉之後才不會變形
		context.translate(originX, originY)
		
		// 橢圓數目
		var num = 50;
		for (var i = 0; i < num; i++) {
			ellipse(0, 0, 10, 80);
			context.rotate(2 * Math.PI / num);
		}
	</script>
</body>
</html>