zoukankan      html  css  js  c++  java
  • html5 canvas 小例子 旋转的时钟

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Canvas</title>
        <script type="text/javascript" src="jQuery.js"></script>
    </head>
    <style type="text/css">
        body {
            padding: 0;
            margin: 0;
            background: black;
        }
        #canvas {
            background: white;
            margin: 100px 0 0 300px;
        }
        #canvas>span {
            color: white;
            font-size: 14px;
        }
    </style>
    <body>
        <canvas id="canvas" width="600" height="500">
        <span>您的浏览器不支持</span>
    </canvas>
    </body>
    </html>
    <script type="text/javascript">
        /*获取绘制环境*/
        var oc = $('#canvas')[0];
        canvas = oc.getContext('2d');
        /*定义圆心和半径*/
        var x = 250, y = 250, r = 150;
    
        var time = setInterval(function() {
            ClocksWatche();
        }, 1000);
    
        function ClocksWatche() {
            /*清理画布*/
            canvas.clearRect(0, 0, oc.width, oc.height);
            /*开始绘制*/
            canvas.beginPath();
            for(var i = 0; i < 60; i++) {
                /*绘制起始点移到圆心*/
                canvas.moveTo(x, y);
                /*根据圆心和半径每6度绘制一次(圆心横坐标,圆心纵坐标,其实弧度,结束弧度,是否逆时针)*/
                canvas.arc(x, y, r, 6 * i * Math.PI / 180, 6 * (i + 1) * Math.PI / 180, false);
            }
            /*连接至起始点*/
            canvas.closePath();
            /*画线*/
            canvas.stroke();
            /*设置线的粗细*/
            canvas.lineWidth = 3;
            /*开始绘制*/
            canvas.beginPath();
            for(var i = 0; i < 60; i++) {
                /*绘制起始点移到圆心*/
                canvas.moveTo(x, y);
                /*根据圆心和半径没30度绘制一次*/
                canvas.arc(x, y, r, 30 * i * Math.PI / 180, 30 * (i + 1) * Math.PI / 180, false);
            }
            /*连接至起始点*/
            canvas.closePath();
            /*画线*/
            canvas.stroke();
            /*设置填充颜色*/
            canvas.fillStyle = 'white';
            canvas.beginPath();
            canvas.moveTo(x, y);
            canvas.arc(x, y, r * 14 / 15, 0, 360, false);
            canvas.closePath();
            canvas.fill();
    
            var loacalDate = new Date();
            var hours = loacalDate.getHours();
            var minute = loacalDate.getMinutes();
            var sencond = loacalDate.getSeconds();
            hours = (hours * 30 - 90 + minute / 2) * Math.PI / 180;
            minute = (minute * 6 - 90) * Math.PI / 180;
            sencond = (sencond * 6 - 90) * Math.PI / 180;
    
            canvas.beginPath();
            canvas.lineWidth = 5;
            canvas.moveTo(x, y);
            canvas.arc(x, y, r * 8 / 15, hours, hours, false);
            canvas.stroke();
    
            canvas.beginPath();
            canvas.lineWidth = 3;
            canvas.moveTo(x, y);
            canvas.arc(x, y, r * 10 / 15, minute, minute, false);
            canvas.stroke();
    
            canvas.beginPath();
            canvas.lineWidth = 1;
            canvas.moveTo(x, y);
            canvas.arc(x, y, r * 14 / 15, sencond, sencond, false);
            canvas.stroke();
        }
    </script>
  • 相关阅读:
    读书笔记--SQL必知必会07--创建计算字段
    读书笔记--SQL必知必会06--用通配符进行过滤
    读书笔记--SQL必知必会05--高级数据过滤
    FontMetrics ----- 绘制文本,获取文本高度
    Android 防止控件被重复点击
    提高zxing生成二维码的容错率及zxing生成二维码的边框设置
    Android 异常解决方法【汇总】
    setFocusable、setEnabled、setClickable区别
    getView 数据最后加一项
    TextView字体和背景图片 设置透明度
  • 原文地址:https://www.cnblogs.com/lovling/p/6440701.html
Copyright © 2011-2022 走看看