canvas画圆

雨点打透心脏的1/2处 2021-07-24 16:22 667阅读 0赞

画圆方法说明

arc(x, y, radius, startAngle, endAngle, anticlockwise)
该方法有六个参数:x,y为绘制圆弧所在圆上的圆心坐标。radius为半径。startAngle以及endAngle参数用弧度定义了开始以及结束的弧度。
这些都是以x轴为基准。参数anticlockwise为一个布尔值。为true时,是逆时针方向,否则顺时针方向。

实例1

  1. window.onload=function(){
  2. var canvas = document.getElementById('canvas');
  3. canvas.width='300';
  4. canvas.height='300';
  5. var ctx = canvas.getContext('2d');
  6. //从150,150的位置为圆心,50为半径,画一个从0-2π的圆
  7. ctx.arc(150,150,50,0,2*Math.PI);
  8. ctx.stroke();
  9. }

画了一个圆

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RrbTEyMzQ1Ng_size_16_color_FFFFFF_t_70

实例2

  1. window.onload=function(){
  2. var canvas = document.getElementById('canvas');
  3. canvas.width='300';
  4. canvas.height='300';
  5. var ctx = canvas.getContext('2d');
  6. var dis=60;
  7. //平移x方向,画5个圆
  8. for(var i=0;i<5;i++){
  9. ctx.beginPath();
  10. ctx.arc(30+dis*i,30,20,0,2*Math.PI);
  11. ctx.closePath();
  12. ctx.stroke();
  13. }
  14. }

连续的画5个圆

20210114165648100.png

实例3

  1. window.onload=function(){
  2. var canvas = document.getElementById('canvas');
  3. canvas.width='300';
  4. canvas.height='300';
  5. var ctx = canvas.getContext('2d');
  6. var n=1;
  7. var dis=60;
  8. //平移x方向,画5个圆
  9. for(var i=0;i<5;i++){
  10. ctx.beginPath();
  11. ctx.arc(30+dis*i,30,20,0,2*Math.PI);
  12. ctx.closePath();
  13. ctx.stroke();
  14. }
  15. //平移Y方向,画5个圆
  16. for(var i=0;i<5;i++){
  17. ctx.beginPath();
  18. ctx.arc(30+dis*i,30+dis*n,20,0,2*Math.PI/(i+1) );
  19. ctx.closePath();
  20. ctx.stroke();
  21. }
  22. n++;
  23. //平移Y方向,画5个圆
  24. for(var i=0;i<5;i++){
  25. ctx.beginPath();
  26. ctx.arc(30+dis*i,30+dis*n,20,0,2*Math.PI/(i+1) );
  27. //ctx.closePath();
  28. ctx.stroke();
  29. }
  30. }

需要注意的是 closePath 会将没有闭合的圆弧闭合

实例4

  1. //平移Y方向,画5个圆
  2. for(var i=0;i<5;i++){
  3. ctx.beginPath();
  4. ctx.arc(30+dis*i,30+dis*n,20,0,2*Math.PI/(i+1) ,true);
  5. //ctx.closePath();
  6. ctx.stroke();
  7. }

arc函数的最后一个函数设置为true,与之前默认的对面可以和明显的看出区别

20210114170404369.png

实例5

  1. for(var i=0;i<5;i++){
  2. ctx.beginPath();
  3. ctx.arc(30+dis*i,30+dis*n,20,0,2*Math.PI/(i+1) ,true);
  4. //ctx.closePath();
  5. ctx.fill();
  6. }

fill会填充为实心的,并且会自动闭合

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RrbTEyMzQ1Ng_size_16_color_FFFFFF_t_70 1

完整代码实例

  1. window.onload=function(){
  2. var canvas = document.getElementById('canvas');
  3. canvas.width='300';
  4. canvas.height='300';
  5. var ctx = canvas.getContext('2d');
  6. var n=1;
  7. var dis=60;
  8. //平移x方向,画5个圆
  9. for(var i=0;i<5;i++){
  10. ctx.beginPath();
  11. ctx.arc(30+dis*i,30,20,0,2*Math.PI);
  12. ctx.closePath();
  13. ctx.stroke();
  14. }
  15. //平移Y方向,画5个圆
  16. for(var i=0;i<5;i++){
  17. ctx.beginPath();
  18. ctx.arc(30+dis*i,30+dis*n,20,0,2*Math.PI/(i+1) );
  19. ctx.closePath();
  20. ctx.stroke();
  21. }
  22. n++;
  23. //平移Y方向,画5个圆
  24. for(var i=0;i<5;i++){
  25. ctx.beginPath();
  26. ctx.arc(30+dis*i,30+dis*n,20,0,2*Math.PI/(i+1) );
  27. //ctx.closePath();
  28. ctx.stroke();
  29. }
  30. n++;
  31. //平移Y方向,画5个圆
  32. for(var i=0;i<5;i++){
  33. ctx.beginPath();
  34. ctx.arc(30+dis*i,30+dis*n,20,0,2*Math.PI/(i+1) ,true);
  35. //ctx.closePath();
  36. ctx.stroke();
  37. }
  38. n++;
  39. //平移Y方向,画5个圆
  40. for(var i=0;i<5;i++){
  41. ctx.beginPath();
  42. ctx.arc(30+dis*i,30+dis*n,20,0,2*Math.PI/(i+1) ,true);
  43. //ctx.closePath();
  44. ctx.fill();
  45. }
  46. }

发表评论

表情:
评论列表 (有 0 条评论,667人围观)

还没有评论,来说两句吧...

相关阅读