js绘制时钟

<!doctype html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Canvas绘制时钟Demo</title>

<style>

#myCanvas{

border: 1px solid;

}

</style>

</head>

<body>

<canvas id="myCanvas" width="500" height="400">

很抱歉,你的浏览器不支持canvas元素

</canvas>

<script>

var c = document.getElementById(‘myCanvas‘);//获取Canvas对象

var ctx = c.getContext(‘2d‘);//获取上下文

function drawClock()

{

ctx.clearRect(0,0, c.width, c.height);//清除画布

c.width = c.width;//清除画布时需要重置宽度,否则会有一个画布的重叠

var x = 250,y = 200,r = 180;//定义圆盘的中心坐标和圆盘的半径

/*获取实际的时间*/

var objTime = new Date();

var objHour = objTime.getHours();

var objMin = objTime.getMinutes();

var objSen = objTime.getSeconds();

/*将时间转换为具体的弧度*/

/*

* 因为时钟是从12点的位置算作开始,但是canvas是3点钟的位置算作0度,所以-90度指向12点方向

* 时针是每小时相隔30度,objMin/2是为了做出当分针过半时,时针也相应的处于两个小时之间

* 分针和秒针是每次相隔6度

*/

var arcHour = (-90+objHour*30 + objMin/2)*Math.PI/180;

var arcMin = (-90+objMin*6)*Math.PI/180;//角度*Math.PI/180  表示弧度

var arcSen = (-90+objSen*6)*Math.PI/180;

/*绘制圆盘*/

ctx.beginPath();

for(var i=0;i<60;i++)//一共360度,一共60分钟,每分钟相隔6度,360/6=60

{

ctx.moveTo(x,y);

ctx.arc(x,y,r,6*i*Math.PI/180,6*(i+1)*Math.PI/180,false);

}

ctx.closePath();

ctx.stroke();

/*绘制白盘来盖住下面的线*/

ctx.fillStyle = ‘white‘;

ctx.beginPath();

ctx.arc(x,y,r*19/20,0,360*Math.PI/180,false);//半径取值为r的20分之19

ctx.closePath();

ctx.fill();

/*依葫芦画瓢,制作每一个小时的线*/

/*绘制圆盘*/

ctx.beginPath();

ctx.lineWidth = 3;

for(var i=0;i<12;i++)//一共360度,一共12个小时,每小时相隔30度,360/30=12

{

ctx.moveTo(x,y);

ctx.arc(x,y,r,30*i*Math.PI/180,30*(i+1)*Math.PI/180,false);

}

ctx.closePath();

ctx.stroke();

/*绘制白盘来盖住下面的线*/

ctx.fillStyle = ‘white‘;

ctx.beginPath();

ctx.arc(x,y,r*18/20,0,360*Math.PI/180,false);//半径取值为r的20分之18

ctx.closePath();

ctx.fill();

/*开始绘制时针分针和秒针,技巧就是起始弧度和结束弧度值一样*/

/*开始绘制时针*/

ctx.beginPath();

ctx.moveTo(x,y);

ctx.lineWidth = 7;

ctx.lineCap = ‘round‘;//向线条末端添加圆形线帽

ctx.arc(x,y,r*10/20,arcHour,arcHour,false);//半径取值为r的20分之10

ctx.stroke();

ctx.closePath();

/*开始绘制分针*/

ctx.beginPath();

ctx.moveTo(x,y);

ctx.lineWidth = 5;

ctx.lineCap = ‘round‘;

ctx.arc(x,y,r*12/20,arcMin,arcMin,false);//半径取值为r的20分之12

ctx.stroke();

ctx.closePath();

/*开始绘制秒针*/

ctx.beginPath();

ctx.moveTo(x,y);

ctx.lineWidth = 2;

ctx.lineCap = ‘round‘;

ctx.arc(x,y,r*16/20,arcSen,arcSen,false);//半径取值为r的20分之16

ctx.stroke();

ctx.closePath();

}

setInterval(‘drawClock()‘,1000);//每隔1秒调用绘制时钟函数

</script>

</body>

</html>

原文地址:https://www.cnblogs.com/dbda/p/11523521.html

时间: 2024-10-11 03:13:44

js绘制时钟的相关文章

JS模拟时钟

<html> <head> <title>js模拟时钟</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body onLoad="setInterval(setTimeSpan,1000);"> <span style="fon

利用d3.js绘制中国地图

d3.js是一个比较强的数据可视化js工具.利用它画了一幅中国地图,如下图所示: 源码如下: <!DOCTYPE html> <html> <head> <script type="text/javascript" src="d3.js"></script> <script type="text/javascript" src="d3.csv.js">&l

利用d3.js绘制雷达图

利用d3,js将数据可视化,可以做到数据与代码的分离,方便以后修改数据. 这次利用d3.js绘制了一个五维的雷达图,即将多个对象的五种属性在一张图上对比. 数据写入data.csv.数据类型写入type.csv文件. 效果如下图所示 源码连接:http://download.csdn.net/detail/svap1/7358123 使用是只需调用 radar()函数即可,如下是测试页面代码. <!DOCTYPE html> <html> <head> <meta

Html5绘制时钟

最近在对Html5比较感兴趣,就用空闲时间做一些小例子进行练习,今天绘制一个走动的时钟,具体如下图所示: 具体思路在上图已有说明,代码如下: 1 <script type="text/javascript"> 2 3 //绘制圆形的弧度,ctx 为绘制环境,x,y为绘制中心,r为绘制半径,st为起始弧度,end为结束弧度 4 function circle(ctx, x, y, r, st, end, w) { 5 ctx.lineWidth = w; 6 ctx.begi

【UWP通用应用开发】编辑文本、绘制图形、3D透视效果及绘制时钟实战

编辑文本及键盘输入 相信大家都会使用TextBox,但如果要让文本在TextBox中换行该怎么做呢?将TextWrapping属性设置为Wrap,将AcceptsReturn属性设置为True就好咯. PasswordBox很明显就是一个密码框了,和其他的控件相比其有2个特殊之处,一个是其可以用MaxLength来控制最大的长度,一个是用PasswordChanged来捕捉密码的改名.显然比如QQ密码的MaxLength就是16位了,而PasswordChanged可以用来监测比如用户设置的密码

自定义组件-绘制时钟

1.效果图 2.Canvas对象详解 1.translate(x,y):平移,将画布的坐标原点向左右方向移动x,向上下方向移动y.canvas的默认位置是在(0,0). 例子:画布原点假如落在(1,1),那么translate(10,10)就是在原点(1,1)基础上分别在x轴.y轴移动10,则原点变为(11,11). 2.scale(x,y):扩大.x为水平方向的放大倍数,y为竖直方向的放大倍数. 3.rotate(angel):旋转.angle指旋转的角度,顺时针旋转. 4.transform

JS实现时钟程序

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title&g

js 绘制数学函数

<!-- <!doctype html> --> <html lang="en"> <head> <meta charset="UTF-8"> <title>js绘制数学函数</title> </head> <body> <div id="main" style="border-bottom:solid red 0px;he

使用canvas绘制时钟并通过class面向对象

使用canvas绘制时钟并通过class面向对象 1.思路分析 钟表可分为静止的刻度和动态的指针两大部分由于指针具有动态性,必然需要定时器实时刷新清空并重绘但刻度部分如果一起清空并重绘会降低性能因此可以使用两个重叠在一起的canvas画板来分别绘制两个部分 2.绘制表盘步骤 2.1.首先获取第一个面板的上下文: var canvas1=document.getElementById("canvas1"); var ctx1=canvas1.getContext("2d&quo