代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Css
】
canvas时钟,采用Math.sin和cos实现x
作者:
hello_potato
/ 发布于
2014/12/30
/
671
canvas中采用sin和cos求出圆上的点绘制简单时钟;没使用canvas的rotate;
<html> <head> <meta charset="utf-8"> <title>canvas练习-时钟</title> </head> <style> * { margin: 0; padding: 0; } </style> <body> <canvas id="canvas" width="500" height="500">您的浏览器不支持Canvas!</canvas> </body> </html> <script> var XCENTER = 250, YCENTER = 250, RADIUS = 150, HoursPerSecond = 360 / (12 * 3600), MinutesPerSecond = 0.1, SecondPerSecond = 6; window.onload = function() { var canvas = document.getElementById('canvas'); var context = canvas.getContext('2d'); renderClock(context) setInterval(function() { renderClock(context); }, 1000); } //画圆 function renderClock(cxt) { cxt.clearRect(0, 0, 500, 500); //绘制圆 cxt.beginPath(); cxt.strokeStyle = '#000'; cxt.lineWidth = 1; cxt.arc(XCENTER, YCENTER, RADIUS, 0 ,2*Math.PI); cxt.stroke(); cxt.closePath(); //绘制小时刻度 for(var i = 0; i < 60; i++) { cxt.beginPath(); cxt.lineWidth = 2; if (i % 5 == 0) { drawLine(XCENTER, YCENTER, i / 5 * 30, RADIUS, 20, 'scale', cxt); } else { drawLine(XCENTER, YCENTER, i * 6, RADIUS, 10, 'scale', cxt); } cxt.closePath(); } renderPointer(cxt) } //渲染针 function renderPointer(cxt) { cxt.beginPath(); cxt.lineWidth = 3; drawLine(XCENTER, YCENTER, getCurrentTime() * HoursPerSecond, RADIUS, 60, 'pointer', cxt); //时针 cxt.lineWidth = 2; drawLine(XCENTER, YCENTER, getCurrentTime() * MinutesPerSecond, RADIUS, 30, 'pointer', cxt); //分针 cxt.lineWidth = 1; drawLine(XCENTER, YCENTER, getCurrentTime() * SecondPerSecond, RADIUS, 20, 'pointer', cxt); //秒针 } //获取时间 function getCurrentTime() { var currentTime = new Date(); var resTime = currentTime.getHours() * 3600 + currentTime.getMinutes() * 60 + currentTime.getSeconds(); //秒数; return resTime; } //获取坐标画线 function drawLine(x, y, deg, r, j, target, cxt) { var coord = { x : x + Math.sin(changeRadian(deg)) * r, y : y - Math.cos(changeRadian(deg)) * r, x1 : x + Math.sin(changeRadian(deg)) * (r - j), y1 : y - Math.cos(changeRadian(deg)) * (r - j) } if (target == 'scale') { //刻度 cxt.moveTo(coord.x, coord.y); } else if (target == 'pointer') { //针 cxt.moveTo(x, y); } cxt.lineTo(coord.x1, coord.y1); cxt.stroke(); } //角度转换为弧度 function changeRadian(deg) { return Math.PI / 180 * deg; } </script>
试试其它关键字
canvas
时钟
v
同语言下
.
前端PC-移动端CSS公共样式+HTML
.
手机端页面通用样式
.
H5页面通用头部设置
.
elect默认样式美化代码兼容移动端和pc端
.
按钮效果 css
.
唤醒app
.
放大效果
.
html5+css3实现上拉和下拉刷新
.
html上传图片后,在页面显示上传的图片
.
html5实现点击弹出图片
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
hello_potato
贡献的其它代码
(
1
)
.
canvas时钟,采用Math.sin和cos实现x
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3