JavaScript+canvas 利用貝塞爾曲線繪制曲線


效果圖:

<body>
<canvas id="test" width="800" height="300"></canvas>
<script type="text/javascript">
//一個工具函數,用於將角度從角度制轉化成弧度制
function rads(x){ return Math.PI*x/180;}

var canvas = document.getElementById('test');
var c = canvas.getContext("2d");

//繪制一個圖形,如果需要橢圓的話則進行相應的縮放和旋轉即可
//由於沒有當前點,因此繪制的圖形不需要當前點到圓形起點之間的直線
c.beginPath();
c.arc(75,100,50,	//圓心位於(75,100),半徑為50
	0,rads(360),false);	//從0度到360順時針旋轉

//繪制一個楔,角度從x軸正向順時針度量
//要注意的是arc()方法會將當前點和弧形起點用直線相連
c.moveTo(200,100);		//從圓心開始
c.arc(200,100,50,		//圓心和半徑
	rads(-60),rads(0),	//從-60度到0度
	false);				//順時針
c.closePath();			//將半徑添加到圓心

//同樣的楔,但方向不同
c.moveTo(325,100);		
c.arc(325,100,50,		
	rads(-60),rads(0),	//從-60度到0度
	true);				//逆時針
c.closePath();			

//使用acrTo()方法來繪制圓角,繪制一個一點(400,50)位左上角同時還帶有不同半徑角的正方形
c.moveTo(450,50);			//從上邊的中點開始
c.arcTo(500,50,500,150,30);	//添加部分上邊和右上角
c.arcTo(500,150,400,150,20);	//添加右上角和右下角
c.arcTo(400,150,400,50,10);	//添加底邊和坐下角
c.arcTo(400,50,500,50,0);	//添加走遍左上角
c.closePath();

//二次貝塞爾曲線,一個控制點
c.moveTo(75,250);			//從點(75,200)開始
c.quadraticCurveTo(100,200,175,250);	//畫一條以一直到到點(175,250)結束的曲線
c.fillRect(100-3,200-3,6,6);		//標記控制點(100,200)

//三次貝塞爾曲線
c.moveTo(200,250);		//從點(200,250)開始
c.bezierCurveTo(220,220,280,280,300,250);	//畫一條以一直到點(300,250)結束的曲線
c.fillRect(200-3,220-3,6,6);		//標記控制點
c.fillRect(280-3,280-3,6,6);

//定義一些圖形屬性並繪制曲線
c.fillStyle="#aaa";
c.lineWidth = 5;
c.fill();
</script>
</body>

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM