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

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

   多的也不说了,直接上代码,有不解的欢迎提问,以及对我的建议指教都可以,

ff下效果图:

代码:

<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

时间: 2024-12-07 23:07:49

html5之Canvas坐标变换应用-时钟实例的相关文章

js+html5实现canvas绘制网页时钟的方法_javascript技巧

本文实例讲述了js+html5实现canvas绘制网页时钟的方法,画的是一个可用于网页的.带摆的钟表,可以通过按钮调整其大小和位置,具体实现内容如下 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Clock</title> <script type="tex

用html5的canvas画时钟的问题

问题描述 用html5的canvas画时钟的问题 问题1: //初始化画布 context.save(); context.clearRect(00canvas.widthcanvas.height); context.translate(canvas.width/2canvas.height/2); context.scale(0.90.9); context.rotate(-Math.PI/2); context.save(); 初始化的时候加一句 context.rotate(-Math.

JS基于HTML5的canvas标签实现炫目的色相球动画效果实例_javascript技巧

本文实例讲述了JS基于HTML5的canvas标签实现色相球效果.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>JS canvas标签制作色相球</title> </head> <body> <canvas></canvas&g

HTML5 canvas 9绘制图片实例详解_javascript技巧

绘制图片 Var image=new Image(); image.src=" http://img4.duitang.com/uploads/item/201406/25/20140625182321_4MTau.thumb.700_0.jpeg"; image.onload=function(){} Context.drawImage(image,x,y); Context.drawImage(image,x,y,w,h); Context.drawIamge(image,sx,s

js Canvas实现圆形时钟教程_javascript技巧

阅读本文需要一点关于canvas基本用法的基础,本文实例为大家分享了HTML5 Canvas实现圆形时钟简易教程 第一步:新建一个最简单的html文件,并且在<body>标签中定义元素canvas. canvas.html  <html> <head> <title>Canvas clock tutorial</title> </head> <body> <canvas id="clock" wi

【HTML5】H5新标签大实例

以下是测试Html5新标签性能的大实例: 首先是效果: 代码: <html> <head> <title>Test</title> </head> <body> <h2>header标签定义文档的页眉(介绍信息)</h2> <header> <h3>Welcome to my homepage</h3> <p>My name is Donald Duck</

js+HTML5实现canvas多种颜色渐变效果的方法

  本文实例讲述了js+HTML5实现canvas多种颜色渐变效果的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <!DOCTYPE html> <html> <body> <canvas id="myCanvas" width="200" height="100" style="border:1px

js+html5通过canvas指定开始和结束点绘制线条的方法

  本文实例讲述了js+html5通过canvas指定开始和结束点绘制线条的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <!DOCTYPE html> <html> <body> <canvas id="myCanvas" width="200" height="100" style="border:1p

js+html5实现canvas绘制镂空字体文本的方法

  本文实例讲述了js+html5实现canvas绘制镂空字体文本的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <!DOCTYPE html> <html> <body> <canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3