canvas风景时钟
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title>风景时钟</title>
</head>
<body>
<canvas id="canvas" width="405" height="405" style="border-radius:50%;"></canvas>
<script>
var canvas=document.getElementById('canvas');
var cxt=canvas.getContext('2d');
// 创建img图片对象,用drawImage方法,把图片放在画布上
// 代码中 用clip()方法裁剪图片
var img=new Image();
img.src="img/Hydrangeas.jpg";
img.onload=function(){
// cxt.drawImage(img,0,0,405,405);
clock();
setInterval(clock,1000);
}
// 将所有代码用一个函数包起来
function clock(){ // 获取时间
var date=new Date();
var hour=date.getHours();
var min=date.getMinutes();
var sec=date.getSeconds();
hour=hour>12?hour-12:hour;//用三木运算符换算一下小时数
hour=hour+(min/60);
min=min+(sec/60);
console.log(hour,min,sec)
// 每秒执行前,清空一下画布,就不会照成磊加,重复的情况了 cxt.clearRect(0,0,405,405);
cxt.drawImage(img,0,0,405,405);//每次画布清空之后,把图片挂上去
// 添加文字-----------------------------
cxt.save();//保存以上状态
cxt.font="20px 微软雅黑";
cxt.textAlign="center";
cxt.fillStyle="orangered";
cxt.fillText("made in china",202.5,350);
cxt.restore();
// 添加时间文字
cxt.save();
cxt.fillStyle="white";
cxt.font="18px w微软雅黑";
cxt.textAlign="center";
var txt=date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
cxt.fillText(txt,202.5,320);
cxt.restore();
// 绘制时钟 // 画圆盘
cxt.save();
cxt.strokeStyle="#00FFFF";
cxt.lineWidth="10";
cxt.beginPath();
cxt.arc(202.5,202.5,200,0,2*Math.PI,false);//顺时针
cxt.stroke();
cxt.closePath();
cxt.clip();//裁剪图片
cxt.restore();
// 画时刻度
cxt.save();//保存此时的状态
cxt.translate(202.5,202.5);//将画布原点移动到圆心点上
cxt.strokeStyle="#ffff00";
cxt.lineWidth=7;
for(var i=0;i<12;i++){ cxt.rotate(30*Math.PI/180)
cxt.beginPath();
cxt.moveTo(0,-195);
cxt.lineTo(0,-175);
cxt.closePath();
cxt.stroke(); }
cxt.restore();//回到上次保存的状态 // 画分刻度 60个
// 将时刻度的代码拷贝过来,该一下数据
cxt.save(); cxt.translate(202.5,202.5);//将画布原点移动到圆心点上
cxt.strokeStyle="#ffff00";
cxt.lineWidth=5;//分刻度线条宽度为5,比是刻度细 for(var i=0;i<60;i++){
cxt.rotate(6*Math.PI/180)
cxt.beginPath();
cxt.moveTo(0,-195);
cxt.lineTo(0,-185);
cxt.closePath();
cxt.stroke();
} cxt.restore(); // 画时针
cxt.save();//保存起点坐标 cxt.lineWidth="7";
cxt.strokeStyle="#00ffff";
cxt.translate(202.5,202.5);//将坐标点移到 圆心(旋转好操作)
cxt.rotate(hour*30*Math.PI/180)//一小时 转30度 cxt.beginPath();
cxt.moveTo(0,-130);
cxt.lineTo(0,-10);
cxt.closePath();
cxt.stroke(); cxt.restore(); // 画分针
cxt.save();//保存起点坐标 cxt.lineWidth="5";
cxt.strokeStyle="#ffff00";
cxt.translate(202.5,202.5);//将坐标点移到 圆心(旋转好操作)
cxt.rotate(min*6*Math.PI/180)//一分钟转6度 cxt.beginPath();
cxt.moveTo(0,-150);
cxt.lineTo(0,-10);
cxt.closePath();
cxt.stroke(); cxt.restore(); // 画秒针
cxt.save();//保存起点坐标 cxt.lineWidth="3";
cxt.strokeStyle="#ff0000";
cxt.translate(202.5,202.5);//将坐标点移到 圆心(旋转好操作)
cxt.rotate(sec*6*Math.PI/180)//一秒钟转6度 cxt.beginPath();
cxt.moveTo(0,-170);
cxt.lineTo(0,-10);
cxt.closePath();
cxt.stroke();
// 画秒针上的小圆
cxt.beginPath();
cxt.arc(0,0,7,0,2*Math.PI);
cxt.closePath();
cxt.strokeStyle="#ff0000";
cxt.fillStyle="#ffff00";
cxt.fill();
cxt.stroke(); cxt.beginPath();
cxt.arc(0,-140,7,0,2*Math.PI);
cxt.closePath();
cxt.strokeStyle="#ff0000";
cxt.fillStyle="#ffff00";
cxt.fill();
cxt.stroke(); cxt.restore();
}
// 执行一下
// clock();
// setInterval(clock,1000);
</script>
</body>
</html>
canvas风景时钟的更多相关文章
- [JS,Canvas]日历时钟
[JS,Canvas]日历时钟 Html: <!doctype html> <html> <head> <meta charset="UTF-8&q ...
- 使用canvas绘制时钟
使用canvas绘制时钟 什么使canvas呢?HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.<canvas> 标签只是图 ...
- HTML5 之Canvas 绘制时钟 Demo
<!DOCTYPE html> <html> <head> <title>Canvas 之 时钟 Demo</title> <!--简 ...
- canvas画时钟
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- [ZZ+CH] Html5 canvas+js 时钟
总之新Blog入驻以后,又开始老习惯,到处折腾自定义的空间,放些东西. 想起以前大一的时候做过一个Javascript的时间显示器,现在想做一个时钟,当然现在老奸巨猾,会先去看一看有前辈写过没. 前辈 ...
- canvas粒子时钟
前面的话 本文将使用canvas实现粒子时钟效果 效果展示 点阵数字 digit.js是一个三维数组,包含的是0到9以及冒号(digit[10])的二维点阵.每个数字的点阵表示是7*10大小的二维数组 ...
- canvas画时钟,重拾乐趣!
canvas时钟--效果图 一.先来简单介绍画时钟需要的canvas知识 1.在HTML页面中添加canvas元素,必须定义canvas元素的id属性值以便接下来的调用. HTML代码: <ca ...
- HTML5 Canvas爱心时钟代码
这是一款数字时钟动画,数字又多个小爱心组成,又何问起整理,随着时间推进,每一秒钟新数字替换旧数字,旧数字离去使用天女散花动画,花是五颜六色的. 查看效果:http://hovertree.com/te ...
- 用canvas绘制时钟
用canvas做时钟其实很简单,下面是我做出的效果: 是不是还挺漂亮的? 下面上代码: html <div class="whole"> <canvas id=& ...
随机推荐
- Sql 中的索引
转载:https://www.cnblogs.com/hyd1213126/p/5828937.html
- 关于CPU的一些操作(CPU设置超频)
常见的几种CPU模式: .ondemand:系统默认的超频模式,按需调节,内核提供的功能,不是很强大,但有效实现了动态频率调节,平时以低速方式运行,当系统负载提高时候自动提高频率.以这种模式运行不会因 ...
- z-index神奇的失效了!!!
z-index简单介绍 首先z-index只对定位元素有效,什么是定位元素呢,也就是设置了position属性的元素,position:relative--相对定位,position:absolute ...
- MFC六大核心机制
MFC六大核心机制概述 我们选择了C++,主要是因为它够艺术.够自由,使用它我们可以实现各种想法,而MFC将多种可灵活使用的功能封装起来,我们岂能忍受这种“黑盒”操作?于是研究分析MFC的核心机制成为 ...
- spring整合shiro配置BUG,Tomcat启动不了:Error during artifact deployment. See server log for details
现象 spring配置shiro权限控制之后,项目无法启动 [2019-08-09 09:00:35,800] Artifact export_web_manager:war exploded: Er ...
- 1 sql server 中merge的用法
MERGE 要更新的表名 AS target USING ( 这里是用什么数据源来跟新 ) AS source ( 这里是数据源的所有列名 ) ON 这里是要更新的表和数据源的匹配条件 WHEN MA ...
- Mybatis和hibernate的优缺点比较
介绍: Hibernate :Hibernate 是当前最流行的ORM框架,对数据库结构提供了较为完整的封装. Mybatis:Mybatis同样也是非常流行的ORM框架,主要着力点在于POJO 与S ...
- linux tty终端个 pts伪终端 telnetd伪终端
转:http://blog.sina.com.cn/s/blog_735da7ae0102v2p7.html 终端tty.虚拟控制台.FrameBuffer的切换过程详解 Framebuffer Dr ...
- Java面向对象(三) 【面向对象深入:抽象类,接口,内部类等】
面向对象(Object Oriented) 1.抽象类抽象就是将拥有共同方法和属性的对象提取出来.提取后,重新设计一个更加通用.更加大众化的类,就叫抽象类.1)abstract 关键字修饰类.方法,即 ...
- 7.Netty中 handler 的执行顺序
1.Netty中handler的执行顺序 Handler在Netty中,无疑占据着非常重要的地位.Handler与Servlet中的filter很像,通过Handler可以完成通讯报文的解码编码.拦截 ...