时针.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<canvas id="canvas1" width="800" height="600"></canvas>
<!--
1:表盘
2:刻度
3:指针
4:获取时间 获取时间,重新绘制:每隔1秒钟绘制:
-->
<script type="text/javascript">
var canvas1 = document.querySelector('#canvas1')
var ctx = canvas1.getContext('2d') function drawTime(){
//清盘
ctx.clearRect(0,0,800,600) //表盘
ctx.beginPath()
ctx.arc(400,300,200,0,2*Math.PI)
ctx.lineWidth = 10
ctx.strokeStyle = 'grey'
ctx.stroke()
ctx.closePath() ctx.save()//保留这个坐标系的位置,以及保留ctx的属性样式
//刻度
ctx.translate(400,300) ctx.save()//保留了移动后的坐标原点为400,300像素位置的坐标系 //分针的刻度
for(var i = 0; i< 60;i++){
ctx.beginPath()
//移动坐标系
//有60个刻度,所以每一次旋转360(2*Math.pi)/60
ctx.rotate(2*Math.PI/60)
ctx.moveTo(170,0)
ctx.lineTo(190,0)
ctx.lineWidth = 5
ctx.strokeStyle = '#aaa'
ctx.stroke() ctx.closePath()
} ctx.restore()//恢复到没有旋转前,恢复到坐标系为400,300像素位置的坐标系 ctx.save()
//时钟的刻度
for(var i = 0; i< 12;i++){
ctx.beginPath()
//移动坐标系
//有60个刻度,所以每一次旋转360(2*Math.pi)/60
ctx.rotate(2*Math.PI/12)
ctx.moveTo(165,0)
ctx.lineTo(190,0)
ctx.lineWidth = 10
ctx.strokeStyle = '#333'
ctx.stroke() ctx.closePath()
}
ctx.restore()
ctx.save() //获取时间
var nowTime = new Date()
// console.log(nowTime)
//获取小时
var hour = nowTime.getHours()
//获取分
var min = nowTime.getMinutes()
//获取秒
var sec = nowTime.getSeconds() if(hour>=12){
hour = hour-12
}
console.log(hour,min,sec) //将坐标系逆时针旋转90
ctx.rotate(-2*Math.PI/4)
ctx.save() //首先绘制秒针
ctx.beginPath() ctx.rotate(2*Math.PI/60*sec)
ctx.moveTo(-20,0)
ctx.lineTo(150,0)
ctx.lineWidth = 3
ctx.strokeStyle = 'red'
ctx.stroke()
ctx.closePath() ctx.restore()
ctx.save() //绘制分针
ctx.beginPath() ctx.rotate(2*Math.PI/60*min + 2*Math.PI/60*sec/60)
ctx.moveTo(-15,0)
ctx.lineTo(140,0)
ctx.lineWidth = 5
ctx.strokeStyle = 'darkslategray'
ctx.stroke()
ctx.closePath() ctx.restore() ctx.save() //绘制时针
ctx.beginPath() ctx.rotate(2*Math.PI/12*hour+2*Math.PI/12*min/60+ 2*Math.PI/12/60*sec/60)
ctx.moveTo(-10,0)
ctx.lineTo(100,0)
ctx.lineWidth = 10
ctx.strokeStyle = 'darkslategray'
ctx.stroke()
ctx.closePath() ctx.restore() ctx.restore()
ctx.restore() requestAnimationFrame(drawTime)
} //这是第一种画动画的方式
// setInterval(function(){
// drawTime()
// },20) //尽最大能力去渲染,也可以保证不卡帧,请求动画帧的方法。
requestAnimationFrame(drawTime) </script>
</body>
</html>
时针.html的更多相关文章
- 【模拟,时针分针秒针两两夹角】【没有跳坑好兴奋】hdu - 5387 (多校#8 1008)
算是最好写的一道题了吧,最近模拟没手感,一次过也是很鸡冻o(* ̄▽ ̄*)o 注意事项都在代码里,没有跳坑也不清楚坑点在哪~ #include<cstdio> #include<cst ...
- Android_模拟时钟内时针、分针触摸转动
最近实现了android里的一个机能,在activity里面画了一个模拟的时针,然后触摸上面的时针跟分针可以实现调时间的功能. 其实,说起原来来还是挺简单的,但是我花了将近一周的时间才全部实现,有点惭 ...
- Android-自定义控件之时针-霞辉
注释已经比较详细了,废话就不多说了.贴代码了 时针分针秒钟都做上去了,采用的方法也很简单,仔细看一会就能看懂 自定义View类 package com.xh.mytime; import java.u ...
- uva 579 ClockHands 几何初接触 求时针与分针的夹角
貌似是第一次接触几何题... 求时针与分针的夹角,这不是小学生的奥数题么.我小时候也想过这问题的. 每过一小时时针走1/12*360=30度,每过一分钟时针走1/60*30=0.5度,分针走1/60* ...
- threejs三角形Geometry的顶点时针顺序会导致三角形看不见
var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75,winSize.width/winSize.hei ...
- 时针分针角度问题c语言解法
#include <stdio.h> //时针一小时走30度 double hour_per_hour_angle = 30.0; //先算出时针和分钟 一分钟内 分别走多少度数 //时针 ...
- 剑指offer系列18---顺时针打印矩阵
[题目]定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数.要求时间复杂度是O(1).push pop min [思路]设计一个辅助栈,当新加入的原数据栈中的数小于辅助栈顶的数时就加 ...
- 剑指offer系列17---顺时针打印矩阵(不是很懂)
package com.exe4.offer; import java.util.ArrayList; /** * 17[题目]输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果 ...
- [剑指Offer]29-顺时针打印矩阵-Java
题目链接 https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a?tpId=13&tqId=11172&t ...
随机推荐
- Nginx安装教程,ubuntu18.04
本文介绍Nginx如何安装,操作系统为Ubuntu 18.04. 一.安装 (1)安装git 执行命令:“sudo apt-get install git”. (2)安装aptitude 执行命令 ...
- Vsftp服务-实战案例
Vsftp 实验案例一:(本地用户) 试验版本:Linux7.X版本 公司内部现在有一台FTP 和WEB 服务器,FTP 的功能主要用于维护公司的网站内容,包括上传文 件.创建目录.更新网页等等.公司 ...
- sort,uniq,wc,tr
sort (选项)(参数) sort是用来排序数据的. 以下面这个文本为例 [root@bogon ~]# cat a 123 4567 88 abc aaa AAA jk 777 777 ...
- 一文读懂Java GC原理和调优
概述 本文介绍GC基础原理和理论,GC调优方法思路和方法,基于Hotspot jdk1.8,学习之后将了解如何对生产系统出现的GC问题进行排查解决 阅读时长约30分钟,内容主要如下: GC基础原理,涉 ...
- JVM(四)类加载机制
1.静态绑定和动态绑定 静态绑定:即前期绑定,在程序执行前方法已经被绑定,此时由编译器或者其他连接程序实现,针对Java,可以理解为编译期的绑定,java中只有final.static.private ...
- link 和 @import 的区别是什么?
link语法结构: <link href="url" rel="stylesheet" type="text/css"> @im ...
- day 20作业
目录 1.下面这段代码的输出结果将是什么?请解释. 2.多重继承的执行顺序,请解答以下输出结果是什么?并解释. 3.什么是新式类,什么是经典类,二者有什么区别?什么是深度优先,什么是广度优先? 4.用 ...
- vue3.0的安装使用
关于旧版本 Vue CLI 的包名称由 vue-cli 改成了 @vue/cli. 如果你已经全局安装了旧版本的 vue-cli (1.x 或 2.x),你需要先通过 npm uninstall vu ...
- python编程基础之六
运算符和表达式 +,-,*,/, 加减乘除 %, 模运算 **, 幂运算 // 整除 运算优先级方面:** >正负号(+,-)>//,%>*,/>+,- 模运算有一 ...
- Chirpy Zippy工具使用心得
今天在网上看到MVC开发人员必备的工具中有一个工具叫Chirpy Zippy,可以把项目中的js文件自动压缩成min.js文件,于是就试了下这款工具.上到官网:http://chirpy.codepl ...