canvas 2

来源:互联网 发布:软件开发工具有哪些 编辑:程序博客网 时间:2024/06/15 17:32

  canvas


绘制圆形:

 arc(x,y,半径,起始弧,结束弧,旋转方向)
   -- X,Y:圆心坐标;
   --弧度与角度的关系:弧度=角度*Math.PI/180  -->PI 是大写
   --旋转方向:顺时针(默认:false),逆时针(true)
    示例:
  1. <script>
  2. window.onload=function(){
  3. var oc=document.getElementById('c');
  4. var ocg=oc.getContext('2d');
  5. ocg.arc(150,150,150,0,360*Math.PI/180,true);
  6. ocg.stroke();
  7. }
  8. </script>

vanvas 绘制钟表:
  1. <!DOCTYPE html >
  2. <head>
  3. <title>canvas</title>
  4. <meta charset="UTF-8">
  5. <script>
  6. window.onload=function(){
  7. var oc=document.getElementById('c');
  8. var ocg=oc.getContext('2d');
  9. function toDraw(){
  10. var X=200;
  11. var Y=200;
  12. var r=150;
  13. ocg.clearRect(0,0,oc.width,oc.height)
  14. var oDate=new Date();
  15. var oHours=oDate.getHours();
  16. var oMin=oDate.getMinutes();
  17. var oSen=oDate.getSeconds();
  18. var OhoursValue=(-90+oHours*30+oMin/2)*Math.PI/180;
  19. var oMinValue=(-90+oMin*6)*Math.PI/180;
  20. var oSenValue=(-90+oSen*6)*Math.PI/180;
  21. ocg.beginPath();
  22. for (var i = 0; i <60; i++) {
  23. ocg.moveTo(X,Y);
  24. ocg.arc(X,Y,r,6*i*Math.PI/180,6*(i+1)*Math.PI/180,false)
  25. }
  26. ocg.closePath();
  27. ocg.stroke();
  28. ocg.fillStyle='white'
  29. ocg.beginPath();
  30. ocg.moveTo(X,Y);
  31. ocg.arc(X,Y,r*19/20,0,360*Math.PI/180,false)
  32. ocg.closePath();
  33. ocg.fill();
  34. ocg.lineWidth=3;
  35. ocg.beginPath();
  36. for (var i = 0; i <12; i++) {
  37. ocg.moveTo(X,Y);
  38. ocg.arc(X,Y,r,30*i*Math.PI/180,30*(i+1)*Math.PI/180,false)
  39. }
  40. ocg.closePath();
  41. ocg.stroke();
  42. ocg.fillStyle='white'
  43. ocg.beginPath();
  44. ocg.moveTo(X,Y);
  45. ocg.arc(X,Y,r*18/20,0,360*Math.PI/180,false)
  46. ocg.closePath();
  47. ocg.fill();
  48. ocg.lineWidth=5;
  49. ocg.beginPath();
  50. ocg.moveTo(X,Y);
  51. ocg.arc(X,Y,r*10/20,OhoursValue,OhoursValue,false)
  52. ocg.closePath();
  53. ocg.stroke();
  54. ocg.lineWidth=3;
  55. ocg.beginPath();
  56. ocg.moveTo(X,Y);
  57. ocg.arc(X,Y,r*14/20,oMinValue,oMinValue,false)
  58. ocg.closePath();
  59. ocg.stroke();
  60. ocg.save();
  61. ocg.lineWidth=1;
  62. ocg.strokeStyle='red'
  63. ocg.beginPath();
  64. ocg.moveTo(X,Y);
  65. ocg.arc(X,Y,r*19/20,oSenValue,oSenValue,false)
  66. ocg.closePath();
  67. ocg.stroke();
  68. ocg.restore();
  69. }
  70. setInterval(toDraw,1000)
  71. toDraw();
  72. }
  73. </script>
  74. <style type="text/css">
  75. #c{
  76. background:white;
  77. }
  78. </style>
  79. </head>
  80. <body style='background:black'>
  81. <!-- <div id="div1" data-trr="abc"></div> -->
  82. <canvas id="c" width="1000px" height="600px">你的浏览器不支持canvas</canvas>
  83. </body>
  84. </html>
绘制弧线
 arcTo(X1,Y1,X1,Y2,半径)
   -- X1,Y1:第一个点坐标;起始点
  -- X2,Y2:第二个点坐标;
  1. <script>
  2. window.onload=function(){
  3. var oc=document.getElementById('c');
  4. var ocg=oc.getContext('2d');
  5. ocg.moveTo(100,200)
  6. ocg.arcTo(100,100,200,100,50)
  7. ocg.stroke();
  8. }
  9. </script>
绘制贝赛尔曲线:
方法1.quadraticCurveTo(dx,dy,x1,y1)
       --dx,dy -->第一组控制点
       --x1,y1-->第二组结束坐标
  1. window.onload=function(){
  2. var oc=document.getElementById('c');
  3. var ocg=oc.getContext('2d');
  4. ocg.moveTo(100,200);
  5. ocg.quadraticCurveTo(100,100,200,100);
  6. ocg.stroke();
  7. }
  8. </script>
方法2.bezierCurveTo(dx1,dy1,dx2,dy2,x1,y1)
           --dx1,dy1 -->第一组控制点
      --dx2,dy2 -->第二组控制点
       --x1,y1-->第三组结束坐标
  1. window.onload=function(){
  2. var oc=document.getElementById('c');
  3. var ocg=oc.getContext('2d');
  4. ocg.moveTo(100,200);
  5. ocg.bezierCurveTo(100,100,200,200,200,100);
  6. ocg.stroke();
  7. }
  8. </script>
变换:
1.translate(x,y)   -->偏移 :从起始点为基准点,移动当前坐标位置,绘制在它后的图形才会偏移,前面的不会偏移
  1. var oc=document.getElementById('c');
  2. var ocg=oc.getContext('2d');
  3. ocg.translate(100,100);
  4. ocg.fillRect(0,0,100,100);
1.rotate(角度*Math.PI/180)       -->旋转:参数为弧度-->以左上角为中心旋转
  1. var oc=document.getElementById('c');
  2. var ocg=oc.getContext('2d');
  3. ocg.translate(100,100);
  4. ocg.rotate(30*Math.PI/180)
  5. ocg.fillRect(0,0,100,100);
1.scale(宽的缩放比例,的缩放比例)       -->缩小放大 :按原来的大小的倍数进行缩小和放大
  1. var oc=document.getElementById('c');
  2. var ocg=oc.getContext('2d');
  3. ocg.translate(100,100);
  4. ocg.rotate(30*Math.PI/180)
  5. ocg.scale(2,2)
  6. ocg.fillRect(0,0,100,100);
旋转的小方块:
  1. <script>
  2. window.onload=function(){
  3. var oc=document.getElementById('c');
  4. var ocg=oc.getContext('2d');
  5. var num=0;
  6. setInterval(function(){
  7. num++;
  8. ocg.save() ;
  9. ocg.clearRect(0,0,oc.width,oc.height) ;
  10. ocg.translate(300,300);
  11. ocg.rotate(num*Math.PI/180);
  12. ocg.translate(-50,-50);
  13. ocg.fillRect(0,0,100,100);
  14. ocg.restore();
  15. },30)
  16. }
  17. </script>
旋转的放大的小方块:
  1. <script>
  2. window.onload=function(){
  3. var oc=document.getElementById('c');
  4. var ocg=oc.getContext('2d');
  5. var num=0;
  6. var num2=0;
  7. var value=1;
  8. setInterval(function(){
  9. num++;
  10. ocg.save() ;
  11. ocg.clearRect(0,0,oc.width,oc.height) ;
  12. ocg.translate(300,300);
  13. if (num2==100){
  14. value=-1
  15. }else if(num2==0){
  16. value=1
  17. }
  18. num2+=value;
  19. ocg.scale(num2*1/50,num2*1/50)
  20. ocg.rotate(num*Math.PI/180);
  21. ocg.translate(-50,-50);
  22. ocg.fillRect(0,0,100,100);
  23. ocg.restore();
  24. },30)
  25. }
  26. </script>







0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 鞋子不小心踩到口香糖怎么办 站久了膝盖痛怎么办 站久了脚底板痛怎么办 蛇疮好了以后痛怎么办 站久了脚趾痛怎么办 心脏被踢了一脚怎么办 从马背上摔下来怎么办 小孩蛋蛋碰撞后有积液怎么办 小孩蛋蛋大小不一样有积液怎么办 对派出所的笔录不服怎么办 蛋蛋让尿淹了发红有小红瘩达怎么办 手被皮筋弹肿了怎么办 手被皮筋勒肿了怎么办 皮筋把手挤肿了怎么办 猫被皮筋绑久肿了怎么办 抗链0高关节疼怎么办 近视800度老了怎么办 军检体重不达标怎么办 到交房租没有钱怎么办 房租没到期房东要收回怎么办 客户指定发快递我要怎么办? 跨境汇款被退回怎么办 汇款途径写错了怎么办 快递被菜鸟驿站退回怎么办 电脑登录账户已锁定怎么办 被外管局查到境外汇款买房怎么办 军校生复检被刷怎么办 企业私刻章拿去挂项目怎么办? 中通快递被退回怎么办 网易邮箱提示被修复怎么办 小孩屁股烫红了怎么办 8岁近视400度怎么办 部队体能差的人怎么办 上环5天同房了怎么办 肾结石有3mm了怎么办 4*3mm肾结石好痛怎么办 做完肾结石积水后迟续发烧怎么办 血糖高有肾结石反复发高烧怎么办 肾里面有小结石怎么办 大于2厘米的结石怎么办 双肾结石肾盏扩张怎么办