html5之Canvas坐标变换应用-时钟实例

简介:

在上一篇中我们了解html5的Canvas ,在这一篇中不用多说,写一个html5的时钟应用程序试手。在这里主要设置了坐标变换的平移(translate)和旋转变换(ratate),以及html5 Canvas的路径绘图,beginPath,closePath,rect,arc等,还有就是html5 Canvas路径绘图重要的绘图状态的保存和恢复机制,save,restore。

   多的也不说了,直接上代码,有不解的欢迎提问,以及对我的建议指教都可以,X@8}U9MLE}EBUE273)]9PGF

ff下效果图:

51BU_~OA@BJ_FS{`)IO7T4P

代码:

ExpandedBlockStart.gif
复制代码
< html >  
< head >  
< / head> 
< body >  
    
< canvas id = " myCanvas "  width = " 600 "  height = " 300 " > 你的浏览器还不支持哦 < / canvas> 

    
< script type = " text/javascript " >  
        
var  c  =  document.getElementById( " myCanvas " ); 
        
var  cxt  =  c.getContext( " 2d " ); 
        
var  slen  =   60
        
var  mlen  =   50
        
var  hlen  =   40
        cxt.strokeRect(
0 0 , c.width, c.height); 
        cxt.beginPath(); 
        cxt.strokeStyle 
=   " #00f "
        cxt.fillStyle 
=   " #00f "
        cxt.arc(
200 150 5 0 2   *  Math.PI,  true ); 
        cxt.fill(); 
        cxt.closePath(); 

        cxt.beginPath(); 
        cxt.strokeStyle 
=   " #00f "
        cxt.arc(
200 150 100 0 2   *  Math.PI,  true ); 
        cxt.stroke(); 
        cxt.closePath(); 
        cxt.beginPath(); 
        cxt.translate(
200 150 );  // 平移原点; 
        cxt.rotate( - Math.PI  /   2 ); 
        cxt.save();        
        
for  ( var  i  =   0 ; i  <   60 ; i ++ ) { 
            
if  (i  %   5   ==   0 ) { 
                
//                 cxt.fillStyle = "#ff0000"; 
                cxt.fillRect( 80 0 20 5 ); 
                cxt.fillText(
""   +  (i  /   5   ==   0   ?   12  : i  /   5 ),  70 0 ); 
            } 
else  { 
               
//  cxt.strokeStyle = "#00f"; 
                cxt.fillRect( 90 0 10 2 ); 
            } 
            
// document.getElementById("div1").innerText += " " + i; 
            cxt.rotate(Math.PI  /   30 ); 
        } 
        cxt.closePath(); 

        
var  ls  =   0 , lm  =   0 , lh  =   0
function  Refresh() { 
    cxt.restore(); 
    cxt.save(); 
    cxt.rotate(ls 
*  Math.PI  /   30 ); 
    cxt.clearRect(
5 - 1 , slen + 1 2 + 2 ); 
    cxt.restore(); cxt.save(); 

    cxt.rotate(lm 
*  Math.PI  /   30 ); 
    cxt.clearRect(
5 - 1 , mlen + 1 3 + 2 ); 
    cxt.restore(); cxt.save(); 

    cxt.rotate(lh 
*  Math.PI  /   6 ); 
    cxt.clearRect(
5 - 3 , hlen + 1 4 + 2 ); 

    
var  time  =   new  Date(); 
            
var  s  =  ls = time.getSeconds(); 
            
var  m  =  lm = time.getMinutes(); 
            
var  h  =  lh = time.getHours();            
            cxt.restore(); 
            cxt.save(); 
            cxt.rotate(s 
*  Math.PI  /   30 ); 
            cxt.fillRect(
5 0 , slen,  2 ); 
            cxt.restore(); cxt.save(); 
            cxt.rotate(m 
*  Math.PI  /   30 ); 
            cxt.fillRect(
5 0 , mlen,  3 ); 
            cxt.restore(); cxt.save(); 
            cxt.rotate(h 
*  Math.PI  /   6 ); 
            cxt.fillRect(
5 - 2 , hlen,  4 ); 
        } 
        
var  MyInterval  =  setInterval( " Refresh(); " 1000 ); 
    
< / script> 
< div id = " div1 "  style = "  background:#00f; " >< / div> 
< / body> 
< / html>
复制代码

    

         我的html5系列:

  1. html5声频audio和视频video
  2. html5-Canvas绘图
  3. html5之Canvas坐标变换应用-时钟实例
  4. html5-web本地存储

 


作者:破  狼 
出处:http://www.cnblogs.com/whitewolf/ 
本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。该文章也同时发布在我的独立博客中-个人独立博客博客园--破狼51CTO--破狼。http://www.cnblogs.com/whitewolf/archive/2011/03/02/1969398.html


相关文章
|
移动开发 前端开发 API
《HTML5 Canvas游戏开发实战》——3.4 小结
本节书摘来自华章计算机《HTML5 Canvas游戏开发实战》一书中的第3章,第3.4节,作者:张路斌著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
942 0
|
移动开发 JavaScript 前端开发
《HTML5 Canvas游戏开发实战》——3.3 自定义画板
本节书摘来自华章计算机《HTML5 Canvas游戏开发实战》一书中的第3章,第3.3节,作者:张路斌著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1296 0
|
移动开发 JavaScript 前端开发
《HTML5 Canvas游戏开发实战》——3.2 图形的渲染
本节书摘来自华章计算机《HTML5 Canvas游戏开发实战》一书中的第3章,第3.2节,作者:张路斌著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1203 0
|
移动开发 JavaScript 前端开发
《HTML5 Canvas游戏开发实战》——3.1 变形
本节书摘来自华章计算机《HTML5 Canvas游戏开发实战》一书中的第3章,第3.1节,作者:张路斌著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
985 0