canvas繪製貝濟埃曲線程式碼例項

admin發表於2017-02-25
分享一段程式碼例項,它利用canvas實現了繪製貝濟埃曲線的功能。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style>
button {
  display: block;
  margin: 0 0 10px 0;
}
</style>
</head>
<body>
<button id="bezier" class="btn-bezier" type="button">貝濟埃曲線</button>
<canvas id="canvas-bezier" class="can-beier" width="300" height="300"></canvas>
<canvas id="canvas-quardratic" class="quardratic" width="300" height="300"></canvas>
<script>
var bezier = document.getElementById("bezier");
bezier.addEventListener("click", drawbezier, false);
 
function drawbezier() {
  var canvasBezier = document.getElementById("canvas-bezier");
  // canvasBezier.style.display = "block";
  if (canvasBezier == null) {
    return false;
  }
  var context = canvasBezier.getContext("2d");
  context.fillStyle = "#eeeeff";
  context.fillRect(0, 0, 300, 300);
  var n = 0;
  var dx = 150;
  var dy = 150;
  var s = 100;
  context.beginPath();
  context.globalCompositeOperation = 'and';
  context.fillStyle = 'rgb(100,255,100)';
  var x = Math.sin(0);
  var y = Math.cos(0);
  var dig = Math.PI / 15 * 11;
  context.moveTo(dx, dy);
  for (var i = 0; i < 30; i++) {
    var x = Math.sin(i * dig);
    var y = Math.cos(i * dig);
    context.bezierCurveTo(dx + x * s, dy + y * s - 100, dx + x * s + 100, dy + y * s, dx + x * s, dy + y * s);
  }
  context.closePath();
  context.fill();
  context.stroke();
}
</script>
</body>
</html>

相關文章