canvas+js实现时钟效果图

  1 <! DOCTYPE html>
  2 <html>
  3 <head>
  4 <title>Clock</title>
  5 </head>
  6 <style>
  7 canvas{
  8 border:1px solid red;
  9 }
 10 </style>
 11 <body >
 12 <canvas width=500 height=400  id="c">浏览器暂不支持该功能</canvas>
 13 </body>
 14 <script>
 15 //画表盘的函数
 16 function drawcycle(){
 17 var cxt=document.getElementById("c").getContext("2d");
 18 //画圆盘
 19 cxt.fillStyle=‘gray‘;
 20 cxt.beginPath();
 21 cxt.arc(250,200,120,0,Math.PI*2,false);
 22 cxt.closePath();
 23 cxt.fill();
 24 //画指针心
 25 cxt.fillStyle=‘black‘;
 26 cxt.beginPath();
 27 cxt.arc(250,200,5,0,Math.PI*2,false);
 28 cxt.closePath();
 29 cxt.fill();
 30 //画刻度
 31 cxt.fillStyle=‘black‘;
 32 cxt.beginPath()
 33 cxt.fillRect(248,81,4,10);
 34 cxt.fillRect(360,198,10,4);
 35 cxt.fillRect(248,310,4,10);
 36 cxt.fillRect(130,198,10,4);
 37 cxt.closePath();
 38 //画线条观测刻度位置是否端正
 39 cxt.moveTo(250,80);
 40 cxt.lineTo(250,320);
 41 cxt.moveTo(130,200);
 42 cxt.lineTo(370,200);
 43 cxt.stroke();*/
 44 }
 45 //变量alphe代表秒针初始状态所在位置角度
 46 var alphe=Math.PI/2;
 47 //变量bata代表分针初始状态所在位置角度
 48 var bata=Math.PI/2;
 49 //变量gama代表时针初始状态所在角度
 50 var gama=Math.PI/2;
 51 //秒针,分针,时针长度定义
 52 var second_len=105;
 53 var minite_len=75;
 54 var hour_len=55;
 55 //画针的函数
 56 function drawpaint(){
 57 //画布的宽高
 58 var width=500;
 59 var height=400;
 60 //秒针初始位置
 61 var second_start_width=250;
 62 var second_start_height=95;
 63 //分针初始化
 64 var minite_start_width=0;
 65 var minite_start_height=0;
 66 //时针初始化
 67 var hour_start_width=0;
 68 var hour_start_height=0;
 69 var cxt=document.getElementById("c").getContext("2d");
 70 cxt.clearRect(0,0,width,height);
 71 drawcycle();
 72 cxt.fillStyle=‘black‘;
 73 //画秒针
 74 cxt.moveTo(250,200);
 75 var del=Math.PI/30;
 76 alphe=alphe-del;
 77 second_start_width +=second_len*Math.cos(alphe);
 78 second_start_height =200-second_len*Math.sin(alphe);
 79 cxt.lineTo(second_start_width,second_start_height);
 80 cxt.stroke();
 81 //画分针
 82 cxt.moveTo(250,200);
 83 //分针一秒转过的角度
 84 var del_min=Math.PI/1800;
 85 bata=bata-del_min;
 86 minite_start_width =250+minite_len*Math.cos(bata);
 87 minite_start_height =200-minite_len*Math.sin(bata);
 88 cxt.lineTo(minite_start_width,minite_start_height);
 89 cxt.stroke();
 90 //cxt.fillRect(248,110,4,90);
 91 //画时针
 92 cxt.moveTo(250,200);
 93 //时针一秒转过的角度
 94 var del_hou=Math.PI/108000;
 95 gama=gama-del_hou;
 96 hour_start_width =250+hour_len*Math.cos(gama);
 97 hour_start_height =200-hour_len*Math.sin(gama);
 98 cxt.lineTo(hour_start_width,hour_start_height);
 99 cxt.stroke();
100 //cxt.fillRect(247,130,6,70);*/
101 }
102 function move(){
103 setInterval(‘drawpaint()‘,1000);
104 }
105 </script>
106 </html>
  • 实现思路:首先要有绘图的画布,既要用到canvas画布,其次要绘出表盘的图案,最后要画出针的位置,这里注意到不管是时针还是分针亦或是秒针,他们的圆心始终是重叠的,唯一要关注的就是画线的终点坐标,这里就要有一定的几何图案的分析能力。
  • 运行效果:

原文地址:https://www.cnblogs.com/g177w/p/8412838.html

时间: 2024-10-17 01:50:39

canvas+js实现时钟效果图的相关文章

h5+canvas绘制动画时钟

h5+canvas绘制动画时钟 效果图,这个是截图,可以动的, 代码如下: <!DOCTYPE html><html><head><title>动画效果</title></head> <body> <canvas id="anm" width="600" height="600" style="border:1px solid gray"

用html5中的canvas写的时钟

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8&

玩转html5(四)----使用canvas画一个时钟(可以动的哦!)

先给个效果图,我画的比较丑,大家可以自己美化一下, 直接上代码: <!DOCTYPE html> <meta charset="utf-8"> <html> <body> <canvas width="500" height="500" id="clock" > 您的浏览器不支持canvas </canvas> <script> //获取画布

HTML5 Canvas绘制实时时钟

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>try to draw the colock</title> <script src="js/modernizr-1.7.js"></script> <script type="text/javascript"> wind

Android UI编程进阶——使用SurfaceViewt和Canvas实现动态时钟

概述: 很多时候我们想要自己写一些类似时钟.罗盘的控件,却又找不到合适的Demo.我想这时你可能索性就直接上图片了.在Android有Canvas和Paint这么好的画师的情况下,还是选择使用图片,的确是有一些尴尬了.下面我就利用一步一步实现自定义时钟来对这个问题做一个讲解.(注明:本人不太会制作GIF图片,以下图片均不能动态展示,想要查看动态效果,请转到博客末尾处下载源码进行查看) 错误示例: 这里我有一个"错误"的示例.这里的错误其实应该是要打上双引号的,因为它不是真的错误,只是在

canvas做的时钟,学习下

canvas标签只是图形容器,您必须使用脚本来绘制图形. getContext() 方法可返回一个对象,该对象提供了用于在画布上绘图的方法和属性.——获取上下文对象. getContext("2d") 对象属性和方法,可用于在画布上绘制文本.线条.矩形.圆形等等. fillRect(l,t,w,h):默认颜色是黑色 strokeRect(l,t,w,h):带边框的方块.默认一像素黑色边框 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. beginP

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

html5 canvas+js实现ps钢笔抠图

html5 canvas+js实现ps钢笔抠图 1. 项目要求需要用js实现photoshop中钢笔抠图功能,就用了近三四天的时间去解决它,最终还是基本上把他实现了. 做的过程中走了不少弯路,最终一同事找到了canvans以比较核心的属性globalCompositeOperation = "destination-out", 属性可以实现通过由多个点构成的闭合区间设置成透明色穿透画布背景色或是背景图片,这样省了许多事. 2.实现效果: 鼠标点完之后会将所有的点连成闭合区间,并可自由拖

js轮播效果图

<!DOCTYPE html><html><head> <title></title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> <style type="text/css"> *{ padding: 0px; margin: 0px; } #slideBox{ posi