canvas实现钟表
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#clock{
background: aqua;
}
</style>
</head>
<body>
<canvas id="clock" width="500" height="500"></canvas>
<script src="main.js"></script>
</body>
</html>
/**
* Created by Administrator on 2016/10/14.
*/
(function () { var clock = document.querySelector("#clock");
var con = clock.getContext("2d"); //清理画布
function clearCanvas() {
con.clearRect(0, 0, 500, 500);
} // 绘制表盘
function drawClockDial() {
con.save();
con.beginPath();
con.fillStyle = "coral";
con.arc(250, 250, 200, 0, 2 * Math.PI);
con.fill();
var grad = con.createLinearGradient(0, 0, 0, 140);
grad.addColorStop(1, 'rgb(192, 80, 77)');
grad.addColorStop(0.5, 'rgb(155, 187, 89)');
grad.addColorStop(0, 'rgb(128, 100, 162)');
con.lineWidth = 6;
con.strokeStyle = grad;
con.stroke();
con.closePath();
con.restore(); for (var i = 0; i < 12; i++) { var x = 180 * Math.sin(i * 30 * Math.PI / 180);
var y = 180 * -Math.cos(i * 30 * Math.PI / 180);
con.save();
con.translate(240, 270);
con.font = "50px 宋体";
con.fillText(i.toString(), x, y);
con.restore(); }
} //绘制针
function drawHand() {
clearCanvas();
drawClockDial(); var time = new Date();
var hour = parseInt(time.getHours());
var min = parseInt(time.getMinutes());
var sec = parseInt(time.getSeconds()); //时针
con.save();
con.lineWidth = 5;
con.strokeStyle = "green";
con.translate(250, 250);
con.rotate((hour * 30 + min / 60) * Math.PI / 180);
con.beginPath();
con.moveTo(0, -100);
con.lineTo(0, 0);
con.lineCap = "round";
con.stroke();
con.closePath();
con.restore(); // 分针
con.save();
con.lineWidth = 5;
con.strokeStyle = "blue";
con.translate(250, 250);
con.rotate((min * 6 + sec / 60) * Math.PI / 180);
con.beginPath();
con.moveTo(0, -130);
con.lineTo(0, 0);
con.lineCap = "round";
con.stroke();
con.closePath();
con.restore(); //秒针
con.save();
con.lineWidth = 5;
con.strokeStyle = "red";
con.translate(250, 250);
con.rotate(sec * 6 * Math.PI / 180);
con.beginPath();
con.moveTo(0, -150);
con.lineTo(0, 0);
con.lineCap = "round";
con.stroke();
con.closePath();
con.restore(); //表心
con.save();
con.beginPath();
con.arc(250, 250, 5, 0, 2 * Math.PI);
con.closePath();
con.lineWidth = 3;
con.stroke();
con.restore(); requestAnimationFrame(drawHand);
} function init() {
drawHand();
} init();
})();
效果图:

canvas实现钟表的更多相关文章
- canvas画画板,canvas画五角星,canvas制作钟表、Konva写钟表
制作一个画画板,有清屏有橡皮擦有画笔可以换颜色 style样式 <head> <meta charset="UTF-8"> <title>画画板 ...
- 基于canvas实现钟表
原理说明 1.通过arc方法实现钟表外环: 2.通过line实现钟表时针,分针,秒针和刻度标志的绘制,基于save和restore方法旋转画布绘制不同角度的指针: 3.通过font方法实现在画布上绘制 ...
- 基础canvas应用-钟表绘制
首先,canvas语法基础薄弱的小伙伴请点这里,剩下的小伙伴们可以接着往下看了. 一个表,需要画什么出来呢:3条线(时分秒针),1个圆(表盘),以及60条短线/点(刻度). 嗯,没毛病. 那接下来让我 ...
- Canvas基础——钟表绘制
首先,canvas语法基础薄弱的小伙伴请点这里,剩下的小伙伴们可以接着往下看了. 一个表,需要画什么出来呢:3条线(时分秒针),1个圆(表盘),以及60条短线/点(刻度). 嗯,没毛病. 那接下来让我 ...
- HTML5 Canvas 画钟表
画钟表是2D画图的老生常谈,我也不能免俗弄了一个.代码如下: <!DOCTYPE html> <html lang="utf-8"> <meta ht ...
- canvas 画钟表
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- Canvas 实现钟表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 自定义view(二)
这里是自定义view(二),上一篇关于自定义view的一些基本知识,比如说自定义view的步骤.会涉及到哪些函数以及如何实现自定义属性,同时实现了一个很基础的自定义控件,一个自定义的计时器,需要看的人 ...
- 【python】列出http://www.cnblogs.com/xiandedanteng中所有博文的标题
代码: # 列出http://www.cnblogs.com/xiandedanteng中所有博文的标题 from bs4 import BeautifulSoup import requests u ...
随机推荐
- zookeeper系列之五—Leader选举算法
leader选举算法 zookeeper server内部原理 zookeeper client
- install ios开发环境
环境搭建参照下边这个网址: http://itbbs.pconline.com.cn/soft/50602805.html
- 使用Tesseract OCR识别验证码
1.下载Tessrac OCR,默认安装 2.把验证码code.jpg图片放在D盘 3.打开cmd,进入D盘,输入:tesseract code.jpg result 4.进入D盘,生成了resul ...
- shoususaiBti
Description 郭橐驼,不知始何名.病偻,隆然伏行,有类橐驼者,故乡人号之驼.驼闻之,曰:“甚善.名我固当.”因舍其名,亦自谓橐驼云.其乡曰丰乐乡,在长安西.驼业种树,凡长安豪富人为观游及卖果 ...
- 【转载】ODBC, OLEDB, ADO, ADO.Net的演化简史
原文:ODBC, OLEDB, ADO, ADO.Net的演化简史 1.演变历史 它们是按照这个时间先后的顺序逐步出现的,史前->ODBC->OLEDB->ADO->ADO.N ...
- DbUtils使用时抛出Cannot get a connection
java.sql.SQLException: Cannot get a connection, pool error Timeout waiting for idle object Caused by ...
- PHPwebshell分析
这几天已知在做webshell的检测,JSP的不说了,特征检测起来很好匹配到,而且全是一家亲,互相模仿的居多. 今天看了一篇文章,看到14年蘑菇的webshell的后门然后很不错. ========= ...
- 【分享】通过Excel生成批量SQL语句,处理大量数据的好办法
我们经常会遇到这样的要求:用户给发过来一些数据,要我们直接给存放到数据库里面,有的是Insert,有的是Update等等,少量的数据我们可以采取最原始的办法,也就是在SQL里面用Insert into ...
- python_way day12 RabbitMQ ,pymysql
python_way day12 1.RabbitMQ 2.pymysql RabbitMQ 1.基本用法 """ producer """ ...
- SQL 语句转换格式函数Cast、Convert
CAST和CONVERT都经常被使用.特别提取出来作为一篇文章,方便查找. CAST.CONVERT都可以执行数据类型转换.在大部分情况下,两者执行同样的功能,不同的是CONVERT还提供一些特别的日 ...