<!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风景时钟的更多相关文章

  1. [JS,Canvas]日历时钟

    [JS,Canvas]日历时钟 Html: <!doctype html> <html> <head> <meta charset="UTF-8&q ...

  2. 使用canvas绘制时钟

    使用canvas绘制时钟  什么使canvas呢?HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.<canvas> 标签只是图 ...

  3. HTML5 之Canvas 绘制时钟 Demo

    <!DOCTYPE html> <html> <head> <title>Canvas 之 时钟 Demo</title> <!--简 ...

  4. canvas画时钟

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  5. [ZZ+CH] Html5 canvas+js 时钟

    总之新Blog入驻以后,又开始老习惯,到处折腾自定义的空间,放些东西. 想起以前大一的时候做过一个Javascript的时间显示器,现在想做一个时钟,当然现在老奸巨猾,会先去看一看有前辈写过没. 前辈 ...

  6. canvas粒子时钟

    前面的话 本文将使用canvas实现粒子时钟效果 效果展示 点阵数字 digit.js是一个三维数组,包含的是0到9以及冒号(digit[10])的二维点阵.每个数字的点阵表示是7*10大小的二维数组 ...

  7. canvas画时钟,重拾乐趣!

    canvas时钟--效果图 一.先来简单介绍画时钟需要的canvas知识 1.在HTML页面中添加canvas元素,必须定义canvas元素的id属性值以便接下来的调用. HTML代码: <ca ...

  8. HTML5 Canvas爱心时钟代码

    这是一款数字时钟动画,数字又多个小爱心组成,又何问起整理,随着时间推进,每一秒钟新数字替换旧数字,旧数字离去使用天女散花动画,花是五颜六色的. 查看效果:http://hovertree.com/te ...

  9. 用canvas绘制时钟

    用canvas做时钟其实很简单,下面是我做出的效果: 是不是还挺漂亮的? 下面上代码: html <div class="whole"> <canvas id=& ...

随机推荐

  1. 不同主机的docker内容器通过直接路由的方式进行通信

    引用文章链接:https://www.cnblogs.com/xiao987334176/p/10049844.html 六.操作总结 修改不同主机上docker默认的网络参数 主机1:192.168 ...

  2. 《深入理解 Java 虚拟机》学习笔记 -- 内存区域

    <深入理解 Java 虚拟机>学习笔记 -- 内存区域 运行时数据区域 主要分为 6 部分: 程序计数器 虚拟机栈 本地方法栈 Java 堆 方法区 如图所示: 1. 程序计数器(线程私有 ...

  3. 使用 ASP.NET Core 的 gRPC 服务

    将 gRPC 服务添加到 ASP.NET Core 应用 gRPC 需要gRPC包. 配置 gRPC 在 Startup.cs 中: gRPC 是通过AddGrpc方法启用的. 每个 gRPC 服务通 ...

  4. 在Global.asax中 注册Application_Error事件 捕获全局异常

    参考于:https://shiyousan.com/post/635813858052755170 在ASP.NET MVC中,通过应用程序生命周期中的Application_Error事件可以捕获到 ...

  5. EF入门-CRUD操作

    一.EF数据查询假设我们已经定义好了context:private AccountContext db = new AccountContext(); 1.[基本查询] 查询所有var users = ...

  6. 初识python之了解程序设计基本方法

    对于用计算机解决一些问题,这里有一个程序设计的基本方法,主要分为六个步骤,其分析和实现过程如下: (1)分析问题:利用计算机解决问题需要结合计算机技术的发展水平和人类对问题的思考程度,在特定技术和社会 ...

  7. SSE笔记

    1.8位加: *(__m128i*)(dest + i * 16) = _mm_add_epi8(*(__m128i*)(srcA + i * 16), *(__m128i*)(srcB + i * ...

  8. LeetCode 腾讯精选50题--最小栈

    题目很简单,实现一个最小栈,能够以线形的时间获取栈中元素的最小值 自己的思路如下: 利用数组,以及两个变量, last用于记录栈顶元素的位置,min用于记录栈中元素的最小值: 每一次push,都比较m ...

  9. Idea格式化快捷键无效,没反应

    Idea格式化快捷键无效,没反应 1,关闭网易云音乐快捷键 2,修改搜狗输入法快捷键 目前本人只遇到过这两种

  10. Linux下的打包操作

    范例一:将整个 test 目录下的文件全部打包成为 test.tar[python@master ~]$ tar -cvf test.tar test/         ==仅打包,不压缩!test/ ...