您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關怎么使用canvas畫一個圓的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
首先我們來看第一種canvas畫圓的方法:使用canvas arc()方法動態實現畫圓
arc() 方法創建弧/曲線(用于創建圓或部分圓)。
思路:通過設置的開始角度和結束角度來做限定,然后通過累加臨時的角度變量實現動畫效果。
語法:context.arc(x,y,r,sAngle,eAngle,counterclockwise);
canvas畫圓的實現代碼:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style type="text/css"> #myCanvas{ margin: 0 auto; display: block; } </style> </head> <body> <canvas id="myCanvas">當前瀏覽器不支持canvas組件請升級!</canvas> <script type="text/javascript"> //方法一:arc 動態畫圓 var c = document.getElementById('myCanvas'); var ctx = c.getContext('2d'); var mW = c.width = 300; var mH = c.height = 300; var lineWidth = 5; var r = mW / 2; //中間位置 var cR = r - 4 * lineWidth; //圓半徑 var startAngle = -(1 / 2 * Math.PI); //開始角度 var endAngle = startAngle + 2 * Math.PI; //結束角度 var xAngle = 1 * (Math.PI / 180); //偏移角度量 var fontSize = 35; //字號大小 var tmpAngle = startAngle; //臨時角度變量 //渲染函數 var rander = function(){ if(tmpAngle >= endAngle){ return; }else if(tmpAngle + xAngle > endAngle){ tmpAngle = endAngle; }else{ tmpAngle += xAngle; } ctx.clearRect(0, 0, mW, mH); //畫圈 ctx.beginPath(); ctx.lineWidth = lineWidth; ctx.strokeStyle = '#1c86d1'; ctx.arc(r, r, cR, startAngle, tmpAngle); ctx.stroke(); ctx.closePath(); //寫字 ctx.fillStyle = '#1d89d5'; ctx.font= fontSize + 'px Microsoft Yahei'; ctx.textAlign='center'; ctx.fillText( Math.round((tmpAngle - startAngle) / (endAngle - startAngle) * 100) + '%', r, r + fontSize / 2); requestAnimationFrame(rander); }; rander(); </script> </body> </html>
canvas畫圓的效果圖:
其次我們來看一下第二種canvas畫圓的方法:使用canvas rotate()方法畫圓
rotate() 方法旋轉當前的繪圖。
思路:通過重新定義圓點坐標為(0,0),然后通過在規定范圍內旋轉圖形,進行單點繪制。
語法:context.translate(x,y);
canvas畫圓的實現代碼:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style type="text/css"> #myCanvas{ margin: 0 auto; display: block; } </style></head><body> <canvas id="myCanvas">當前瀏覽器不支持canvas組件請升級!</canvas> <script type="text/javascript"> //方法二:rotate() 動態畫圓 var c = document.getElementById('myCanvas'); var ctx = c.getContext('2d'); var mW = c.width = 300; var mH = c.height = 300; var lineWidth = 5; var r = mW / 2; //中間位置 var cR = r - 4 * lineWidth; //圓半徑 var startAngle = -(1 / 2 * Math.PI); //開始角度 var endAngle = startAngle + 2 * Math.PI; //結束角度 var xAngle = 1 * (Math.PI / 180); //偏移角度量 var fontSize = 35; //字號大小 var tmpAngle = startAngle; //臨時角度變量 //渲染函數 var rander = function(){ if(tmpAngle >= endAngle){ return; }else if(tmpAngle + xAngle > endAngle){ tmpAngle = endAngle; }else{ tmpAngle += xAngle; } ctx.clearRect(0, 0, mW, mH); //畫圈 ctx.save(); ctx.beginPath(); ctx.lineWidth = lineWidth; ctx.strokeStyle = '#1c86d1'; ctx.translate(r, r); //重定義圓點 ctx.rotate(-Math.PI); //最上方為起點 for(var i = 0; i <= tmpAngle - startAngle; i += xAngle){ //繪圖 ctx.moveTo(0, cR - lineWidth); ctx.lineTo(0, cR); ctx.rotate(xAngle); //通過旋轉角度和畫點的方式繪制圓 } ctx.stroke(); ctx.closePath(); ctx.restore(); //寫字 ctx.fillStyle = '#1d89d5'; ctx.font= fontSize + 'px Microsoft Yahei'; ctx.textAlign='center'; ctx.fillText( Math.round((tmpAngle - startAngle) / (endAngle - startAngle) * 100) + '%', r, r + fontSize / 2); requestAnimationFrame(rander); }; rander(); </script> </body> </html>
canvas畫圓的效果圖:
最后我們來看一下第三種canvas畫圓的方法:使用獲取圓坐標方式畫圓
思路:通過sin() 和 cos()按一定的角度偏移量,將開始角度和結束角度之間的坐標位置存于數組中,然后按照數組中的坐標點進行繪制。
canvas畫圓的實現代碼:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style type="text/css"> #myCanvas{ margin: 0 auto; display: block; } </style></head><body> <canvas id="myCanvas">當前瀏覽器不支持canvas組件請升級!</canvas> <script type="text/javascript"> //方法三:獲取圓坐標方式 動態畫圓 var c = document.getElementById('myCanvas'); var ctx = c.getContext('2d'); var mW = c.width = 300; var mH = c.height = 300; var lineWidth = 5; var r = mW / 2; //中間位置 var cR = r - 4 * lineWidth; //圓半徑 var startAngle = -(1 / 2 * Math.PI); //開始角度 var endAngle = startAngle + 2 * Math.PI; //結束角度 var xAngle = 2 * (Math.PI / 180); //偏移角度量 var cArr = []; //圓坐標數組 //初始化圓坐標數組 for(var i = startAngle; i <= endAngle; i += xAngle){ //通過sin()和cos()獲取每個角度對應的坐標 var x = r + cR * Math.cos(i); var y = r + cR * Math.sin(i); cArr.push([x, y]); } //移動到開始點 var startPoint = cArr.shift(); ctx.beginPath(); ctx.moveTo(startPoint[0], startPoint[1]); //渲染函數 var rander = function(){ //畫圈 if(cArr.length){ ctx.lineWidth = lineWidth; ctx.strokeStyle = '#1c86d1'; var tmpPoint = cArr.shift(); ctx.lineTo(tmpPoint[0], tmpPoint[1]); ctx.stroke(); }else{ cArr = null; return; } requestAnimationFrame(rander); }; rander(); </script> </body> </html>
canvas畫圓的效果圖:
感謝各位的閱讀!關于怎么使用canvas畫一個圓就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。