HTML5之canvas2

 

 

<head>

<metahttp-equiv="Content-Type" content="text/html;charset=utf-8" />

<title>无标题文档</title>

<style>

body{ background:black;}

#c1{ background:white;}

</style>

<script>

window.onload = function(){

  var oC = document.getElementById('c1');

  var oGC = oC.getContext('2d');

  oGC.moveTo(200,200);

  //弧度 = 角度*Math.PI/180

  oGC.arc(200,200,150,0,90*Math.PI/180,true);

  oGC.stroke();

};

</script>

</head>

<body>

<canvas id="c1"width="400" height="400"></canvas>

</body>

 

 

实例:用arc画时钟

思路:先用弧度画出时钟的刻度线,再在上层画白色的圆盘覆盖点中心,再类似原理画时刻线,再用白色覆盖点。以中心点为起始点画分针线,时针线,秒针线

JS获取当前时间的小时,分钟,秒钟。

var oHoursValue =(-90 + oHours*30 + oMin/2) * Math.PI/180;

     var oMinValue = (-90 + oMin*6) *Math.PI/180;

     var oSenValue = (-90 + oSen*6) *Math.PI/180;

最后开一个定时器,没1秒钟调用该函数一次

 

 

 

<style>

body{ background:black;}

#c1{ background:white;}

</style>

<script>

window.onload = function(){

  var oC = document.getElementById('c1');

  var oGC = oC.getContext('2d');

  function toDraw(){

     var x = 200;

     var y = 200;

     var r = 150;

     oGC.clearRect(0,0,oC.width,oC.height);

     var oDate = new Date();

     var oHours = oDate.getHours();

     var oMin = oDate.getMinutes();

     var oSen =oDate.getSeconds();

     var oHoursValue = (-90 + oHours*30 + oMin/2) * Math.PI/180;

     var oMinValue = (-90 + oMin*6) * Math.PI/180;

     var oSenValue = (-90 + oSen*6) * Math.PI/180;

     /*oGC.moveTo(x,y);

     oGC.arc(x,y,r,0,6*Math.PI/180,false);

     oGC.moveTo(x,y);

     oGC.arc(x,y,r,6*Math.PI/180,12*Math.PI/180,false);*/

     oGC.beginPath();

     for(var i=0;i<60;i++){

        oGC.moveTo(x,y);

  oGC.arc(x,y,r,6*i*Math.PI/180,6*(i+1)*Math.PI/180,false);

     }

     oGC.closePath();

     oGC.stroke();

     oGC.fillStyle = 'white';

     oGC.beginPath();

     oGC.moveTo(x,y);

  oGC.arc(x,y,r*19/20,0,360*(i+1)*Math.PI/180,false);

     oGC.closePath();

     oGC.fill();

     oGC.lineWidth = 3;

     oGC.beginPath();

     for(var i=0;i<12;i++){

        oGC.moveTo(x,y);

  oGC.arc(x,y,r,30*i*Math.PI/180,30*(i+1)*Math.PI/180,false);

     }

     oGC.closePath();

    

     oGC.stroke();

     oGC.fillStyle = 'white';

     oGC.beginPath();

     oGC.moveTo(x,y);

     oGC.arc(x,y,r*18/20,0,360*(i+1)*Math.PI/180,false);

     oGC.closePath();

     oGC.fill();

     oGC.lineWidth = 5;

     oGC.beginPath();

     oGC.moveTo(x,y);

     oGC.arc(x,y,r*10/20,oHoursValue,oHoursValue,false);

     oGC.closePath();

     oGC.stroke();

     oGC.lineWidth = 3;

     oGC.beginPath();

     oGC.moveTo(x,y);

     oGC.arc(x,y,r*14/20,oMinValue,oMinValue,false);

     oGC.closePath();

     oGC.stroke();

     oGC.lineWidth = 1;

     oGC.beginPath();

     oGC.moveTo(x,y);

     oGC.arc(x,y,r*19/20,oSenValue,oSenValue,false);

     oGC.closePath();

     oGC.stroke();

  }

  setInterval(toDraw,1000);

  toDraw();

};

</script>

</head>

<body>

<canvas id="c1"width="400" height="400"></canvas>

</body>

<style>

 

 

 

 

<style>

body{ background:black;}

#c1{ background:white;}

</style>

<script>

 

window.onload = function(){

  var oC = document.getElementById('c1');

  var oGC = oC.getContext('2d');

 

  oGC.moveTo(100,200);

 

  oGC.arcTo(100,100,200,100,50);

 

  oGC.stroke();

 

};

 

</script>

</head>

 

<body>

<canvas id="c1"width="400" height="400"></canvas>

</body>

 

 

<style>

body{ background:black;}

#c1{ background:white;}

</style>

<script>

 

window.onload = function(){

  var oC = document.getElementById('c1');

  var oGC = oC.getContext('2d');

 

  /*oGC.moveTo(100,200);

 

  oGC.quadraticCurveTo(100,100,200,100);

 

  oGC.stroke();*/

 

  oGC.moveTo(100,200);

 

  oGC.bezierCurveTo(100,100,200,200,200,100);

 

  oGC.stroke();

 

};

 

</script>





 








<style>

body{ background:black;}

#c1{ background:white;}

</style>

<script>

 

window.onload = function(){

  var oC = document.getElementById('c1');

  var oGC = oC.getContext('2d');

 

  oGC.translate(100,100);

 

  oGC.rotate(20*Math.PI/180);

  oGC.rotate(25*Math.PI/180);

 

  oGC.scale(2,2);

 

  oGC.fillRect(0,0,100,100);

 

};

 

</script>

</head>

 

<body>

<canvas id="c1"width="400" height="400"></canvas>

</body>

 

 

实例:旋转加缩放的小方块

<style>

body{ background:black;}

#c1{ background:white;}

</style>

<script>

 

window.onload = function(){

  var oC = document.getElementById('c1');

  var oGC = oC.getContext('2d');

 

  var num = 0;

 

  var num2 = 0;

 

  var value = 1;

 

 

  setInterval(function(){

    

    

    

     num++;

    

     oGC.save();

    

     oGC.clearRect(0,0,oC.width,oC.height);

    

     oGC.translate(100,100);

    

     if(num2 == 100){

        value = -1;

     }

     else if(num2 == 0){

        value = 1;

     }

    

     num2 += value;

    

     oGC.scale( num2*1/50,num2*1/50 );

    

     oGC.rotate(num*Math.PI/180);

    

     oGC.translate(-50,-50);

    

     oGC.fillRect(0,0,100,100);

    

     oGC.restore(); 

    

  },30);

 

};

 

</script>

</head>

 

<body>

<canvas id="c1"width="400" height="400"></canvas>

</body>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值