html>

画一个时钟

#canvas{

margin:200px auto;

border: 1px solid #e9e0b5;

display: block;

}

var canvas = document.getElementById("canvas");

var ctx = canvas.getContext("2d");

var width = ctx.canvas.width;

var height = ctx.canvas.height;

var r = width /2;

/*canvas绘制环境*/

function drawBackGround(ctx){

/*绘制圆框,60点,数字*/

ctx.save();

ctx.translate(r,r);

ctx.beginPath();

ctx.arc(0,0,r-5,0,Math.PI * 2);

ctx.lineWidth = 10;

ctx.stroke();

ctx.closePath();

ctx.font = "18px Arial";

ctx.textBaseline = "middle";

ctx.textAlign = "center";

var hoursNumber = [3,4,5,6,7,8,9,10,11,12,1,2];

/*传入的number为数组值,i为数组索引*/

hoursNumber.forEach(function (number,i) {

var rad = 2 * Math.PI / 12 * i;

var x = Math.cos(rad) * (r - 30);

/*cos与sin传入的是弧度值,包括rotate也是弧度,但是css中为deg*/

var y = Math.sin(rad) * (r - 30);

ctx.fillText(number,x,y);

});

for(var i= 0;i

var radDot = 2 * Math.PI / 60 * i;

var x = Math.cos(radDot) * (r - 18);

var y = Math.sin(radDot) * (r - 18);

ctx.beginPath();

/*必须在这里beginpath?   不然出现被灰圈遮住*/

if(i % 5 === 0){

ctx.arc(x,y,2,0,Math.PI *2);

ctx.fillStyle = "#000";

}else

{

ctx.arc(x,y,2,0,Math.PI *2);

ctx.fillStyle = "gray";

}

ctx.fill();

}

}

function drawHour(hour,minnue){

ctx.save();

ctx.beginPath();

var rad = Math.PI * 2 / 12 *hour;

var mrad = Math.PI * 2 / 12 / 60 * minnue;

/*分针会导致时针的运动,需要加上分针引起的弧度,每分钟会导致时针变化的弧度*/

ctx.rotate(rad + mrad);

ctx.moveTo(0,10);

ctx.lineTo(0,-r + 48);

ctx.lineCap = "round";

ctx.lineWidth = 6;

ctx.stroke();

ctx.restore();

}

function drawMinute(minute){

ctx.save();

ctx.beginPath();

var rad = Math.PI * 2 / 60 * minute;

ctx.rotate(rad);

ctx.moveTo(0,10);

ctx.lineTo(0,-r + 36);

ctx.lineCap = "round";

ctx.lineWidth = 3;

ctx.stroke();

ctx.restore();

};

function drawSecond(second){

ctx.save();

ctx.beginPath();

var rad = Math.PI * 2 / 60 * second;

ctx.rotate(rad);

ctx.moveTo(-2,20);

ctx.lineTo(2,20);

ctx.lineTo(1,-r + 40);

ctx.lineTo(-1,-r + 40);

ctx.fillStyle = "#c14543";

ctx.fill();

ctx.restore();

};

function drawDot(){

ctx.beginPath();

ctx.fillStyle = "#fff";

ctx.arc(0,0,3,0,Math.PI * 2);

ctx.fill();

/*中间的白点*/

}

function draw(){

ctx.clearRect(0,0,width,height);

/*每秒进行一次重绘*/

var now = new Date();

var hour = now.getHours();

var minute = now.getMinutes();

var second = now.getSeconds();

drawBackGround(ctx);

drawHour(hour,minute);

drawMinute(minute);

drawSecond(second);

drawDot();

ctx.restore()

}

draw();

setInterval(draw,1000);

欢迎明天采纳

java 指针时钟_java script 的指针式时钟怎么写相关推荐

  1. java 电子时钟_java多线程编程制作电子时钟

    模拟一个电子时钟,它可以在任何时候被启动或者停止,并可以独立的运行. 1.定义一个Clock类.它继承Label类,并实现Runnable接口.这个类中有一个Thread类型的clocker域,以及s ...

  2. java 指针定义_Java中关于指针的个人理解

    大一学生刚刚开始学习Java,很多概念性的东西或者名词不严谨,有错误的地方还望各位大神指正,写的都是自己的一些想法,便于我自己的记忆. 我学习Java一开始很费解,然后自己的一个方法就是把一些全新的概 ...

  3. java多线程世界时钟_Java实现的动态数字时钟功能示例【显示世界时间】

    本文实例讲述了Java实现的动态数字时钟功能.分享给大家供大家参考,具体如下: 构建: 1. Clock继承 JFrame 为运行页面 2. ClockText 测试类 创建 Clock 对象 运行效 ...

  4. java显示多个地区时钟_Java实现的动态数字时钟功能示例【显示世界时间】

    本文实例讲述了java实现的动态数字时钟功能.分享给大家供大家参考,具体如下: 构建: 1. clock继承 jframe 为运行页面 2. clocktext 测试类 创建 clock 对象 运行效 ...

  5. java动态时钟_Java实现的动态数字时钟功能示例【显示世界时间】|chu

    本文实例讲述了Java实现的动态数字时钟功能.分享给大家供大家参考,具体如下: 构建: 1. Clock继承 JFrame 为运行页面 2. ClockText 测试类 创建 Clock 对象 运行效 ...

  6. java的简单数字时钟_Java实现的简单数字时钟功能示例

    本文实例讲述了java实现的简单数字时钟功能.分享给大家供大家参考,具体如下: 应用名称:java数字时钟 用到的知识:java gui编程,线程 开发环境:win8+eclipse+jdk1.8 功 ...

  7. java视频流传输_java – 使用Xuggler流式传输视频

    我能够使用下面的代码成功地与Xuggler一起播放视频.我需要能够从inputStream而不是文件流.我尝试使用注释掉的代码来创建一个Icontainer.当我注释掉代码时,我确实修改了getTes ...

  8. java 命名管道_Java中命名管道的并发读/写(在Windows上)

    我正在尝试使用命名管道在Windows上使用命名管道提供C#应用程序和Java应用程序之间的通信,使用v01ver在此问题中描述的方法: How to open a Windows named pip ...

  9. java计算器类方法_java用类和方法的方式写的简单计算器

    public class JiSuanQi { public double num1; public double num2; public JiSuanQi(double num1, double ...

  10. 南邮java实验_南邮JAVA程序设计实验4 线程程序设计(指针式时钟)

    南邮JAVA程序设计实验4  线程程序设计(指针式时钟) 实验目的: 本实验旨在通过实验,培养学生将JAVA 线程的相关知识点(包括线程调度,线程同步等)有机结合并加以综合应用,在实验中设计多线程程序 ...

最新文章

  1. 谷歌发布深度学习新算法,适用于真实机器人的技能学习
  2. CSS问题的撰写准则
  3. 【Linux常用命令】grep命令
  4. ubuntu中的Jupyter Notebook更换浏览器需要输入密码
  5. uniapp图标_uniapp扩展自定义uniIcon组件图标
  6. 微商分销代理商城源码-代理等级和升级条件
  7. 适用于苹果Mac的 5 个 SSH 客户端软件
  8. Mac OS X 系统修改Terminal终端配色
  9. WPF教程(四) Hello,WPF!
  10. java io 和nio_java对比IO和NIO的文件读写性能测试
  11. 【MATLAB】MATLAB 仿真 — 模拟调制系统 之 AM 调制过程
  12. Mian容器中Page分頁
  13. 文件服务器杀毒软件推荐,服务器上装什么杀毒软件好?
  14. TypeError: _typeof4 is not a function,解决微信小程序报错
  15. iar定义arm版本_Keil MDK 和 IAR 两款ARM开发工具区别比较
  16. 【java8】LocalDateTime、LocalDate与LocalTime的基本使用
  17. chiplogic-网表提取-(2)二极管三极管电阻器件插入
  18. 用计算机能改装成万用表吗,电脑机箱风扇改装成DIY空调扇USB风扇
  19. 喵喵机打印机各系列通过USB数据线连接电脑打印
  20. 联想MIIX520笔记本电脑屏幕亮度无法调节问题

热门文章

  1. 物联网(工程师)+嵌入式学习路线图各个阶段
  2. 芯片流片(晶圆制造)工艺服务的流程。 细节详解连载
  3. 借助 Lucene.Net 构建站内搜索引擎(上)
  4. 【清华大学陈渝】第五章 虚拟存储
  5. java 获取图片后缀_java 自动识别图片文件类型 图片后缀 图片类型
  6. 百度地图 创建应用
  7. 邓仰东专栏|机器学习的那些事儿(四):基于GPU的机器学习实例之AlphaGO
  8. mac下打开.mpp后缀文件的工具OmniPlan
  9. 计算机英语总结800,高三英语教师工作总结800字(通用5篇)
  10. IAR For ARM 7.8下载地址