1. [图片] QQ截图20120712130049.png


​2. [代码][HTML]代码

<!DOCTYPE html>
<html lang="en" >
    <head>
        <meta charset="utf-8" />
        <title>HTML5 时钟</title>
        <link href="css/main.css" rel="stylesheet" type="text/css" />
        <script src="http://code.jquery.com/jquery-latest.min.js"></script>
      <style>
        .clocks {
          height: 500px;
          margin: 25px auto;
          position: relative;
          width: 500px;
        }
      </style>
    </head>
    <body>
        <header>
            <h2>HTML5 时钟</h2>
        </header>
        <div class="clocks">
            <canvas id="canvas" width="500" height="500"></canvas>
        </div>
    </body>
</html>
3. [代码][JavaScript]代码     
// inner variables
var canvas, ctx;
var clockRadius = 250;
var clockImage;
 
// draw functions :
function clear() { // clear canvas function
    ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
}
 
function drawScene() { // main drawScene function
    clear(); // clear canvas
 
    // get current time
    var date = new Date();
    var hours = date.getHours();
    var minutes = date.getMinutes();
    var seconds = date.getSeconds();
    hours = hours > 12 ? hours - 12 : hours;
    var hour = hours + minutes / 60;
    var minute = minutes + seconds / 60;
 
    // save current context
    ctx.save();
 
    // draw clock image (as background)
    ctx.drawImage(clockImage, 0, 0, 500, 500);
    http://www.enterdesk.com/special/shouhui/​
    ctx.translate(canvas.width / 2, canvas.height / 2);
    ctx.beginPath();手绘图片
 
    // draw numbers
    ctx.font = '36px Arial';
    ctx.fillStyle = '#000';
    ctx.textAlign = 'center';
    ctx.textBaseline = 'middle';
    for (var n = 1; n <= 12; n++) {
        var theta = (n - 3) * (Math.PI * 2) / 12;
        var x = clockRadius * 0.7 * Math.cos(theta);
        var y = clockRadius * 0.7 * Math.sin(theta);
        ctx.fillText(n, x, y);
    }
 
    // draw hour
    ctx.save();
    var theta = (hour - 3) * 2 * Math.PI / 12;
    ctx.rotate(theta);
    ctx.beginPath();
    ctx.moveTo(-15, -5);
    ctx.lineTo(-15, 5);
    ctx.lineTo(clockRadius * 0.5, 1);
    ctx.lineTo(clockRadius * 0.5, -1);
    ctx.fill();
    ctx.restore();
 
    // draw minute
    ctx.save();
    var theta = (minute - 15) * 2 * Math.PI / 60;
    ctx.rotate(theta);
    ctx.beginPath();
    ctx.moveTo(-15, -4);
    ctx.lineTo(-15, 4);
    ctx.lineTo(clockRadius * 0.8, 1);
    ctx.lineTo(clockRadius * 0.8, -1);
    ctx.fill();
    ctx.restore();
 
    // draw second
    ctx.save();
    var theta = (seconds - 15) * 2 * Math.PI / 60;
    ctx.rotate(theta);
    ctx.beginPath();
    ctx.moveTo(-15, -3);
    ctx.lineTo(-15, 3);
    ctx.lineTo(clockRadius * 0.9, 1);
    ctx.lineTo(clockRadius * 0.9, -1);
    ctx.fillStyle = '#0f0';
    ctx.fill();
    ctx.restore();
 
    ctx.restore();
}
 
// initialization
$(function(){
    canvas = document.getElementById('canvas');
    ctx = canvas.getContext('2d');
 
    // var width = canvas.width;
    // var height = canvas.height;
 
clockImage = new Image();
clockImage.src = 'http://static.oschina.net/uploads/space/2012/0712/125855_nnla_89964.png';
 
    setInterval(drawScene, 1000); // loop drawScene
});

最新文章

  1. Ubantu【第一篇】:Ubantu中openssh连接
  2. C# 类使用小demo
  3. Java程序设计之合租房synchronized(二)
  4. 使用html2canvas实现浏览器截图
  5. 3.PHP内核探索:一次请求生命周期
  6. EXC_BAD_ACCESS
  7. Python 基础【第二篇】python操作模式
  8. SQL Server索引 (原理、存储)聚集索引、非聚集索引、堆
  9. Flightgear 编译
  10. 为什么我们需要性能测试,需要loadrunner
  11. leetcode day4
  12. 微信小程序之提高应用速度小技巧
  13. MSSQL 常用操作
  14. async和enterproxy控制并发数量
  15. Vue----常见面试题
  16. Linux中docker的使用
  17. ionic报错: Failed to load resource
  18. Python之路,第八篇:Python入门与基础8
  19. 20155217《网络对抗》Exp06 信息搜集与漏洞扫描
  20. PHP 利用redis 做统计缓存mysql的压力

热门文章

  1. 编译lua
  2. 浅析 JavaScript 中的闭包(-------------------------------------------)
  3. MySQL的1067错误
  4. 使用find命令查找Linux中的隐藏文件的方法
  5. Dance In Heap(一):浅析堆的申请释放及相应保护机制
  6. 赞一下TMS Software 和 AdvStringGrid
  7. icmp的程序(ping的实现)
  8. 函数式编程( Functional)与命令式编程( Imperative)对比
  9. angular 复选框checkBox多选的应用
  10. java arraylist源码记录