canvas时钟

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<canvas id="canvas" width="500" height="500">您的浏览器不支持,请更新</canvas>
<script>
//绘制图片:drawImage(image,dx,dy[,dWidth,dHeight]) 复制图片:drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh);
//意思为 把一张图片image放到canvas中,坐标是dx,dy控制图片位置以canvas左上角为坐标原点,dw,dh控制图片在canvas中显示的大小,
//sx和sy代表你要从哪开始裁剪图片,sw和sh代表你要裁剪的那部分的大小
//sx,sy,sWidth,sHeight在图像中指定源矩形,dx,dy,dWidth,dHeight在画布上指定目标矩形
var c=document.getElementById("canvas");//获取canvas元素
var ctx=c.getContext("2d");//获取渲染上下文
function drawClock(){//创建函数
ctx.clearRect(0,0,c.width,c.height);//clearRect在给定矩形内清空一个矩形,0,0清空起始点,后两者为清空图形长宽
var now = new Date();//创建变量时分秒
var sec = now.getSeconds();
var min = now.getMinutes();
var hour = now.getHours();
hour  = min/60;//60分小时加一
hour-hour>12?hour-12:hour;//三元运算符,大于12减去12,小于则不变
//表盘
ctx.lineWidth=10;//lineWidth 属性设置或返回当前线条的宽度,以像素计
ctx.strokeStyle="deepskyblue";//strokeStyle 属性设置或返回用于笔触的颜色、渐变或模式
ctx.beginPath();//起始一条路径,或重置当前路径
ctx.arc(250,250,200,0,360,false);//创建弧/曲线(用于创建圆形或部分圆)
//arc(x,y,r,sAngle,eAngle,counterclockwise)
//圆中心xy坐标r为半径,sAngle,eAngle起始角结束角,counterclockwise可选规定应该逆时针(false)还是顺时针(true)绘图。
ctx.closePath();//创建从当前点回到起始点的路径
ctx.stroke();//绘制已定义的路径。
//刻度
//1.时刻度
for(var i=0;i<12;i  ){
ctx.save();//保存当前环境的状态。
//设置时针粗细
ctx.lineWidth-7;
ctx.strokeStyle="#000";//设置颜色
//设置0,0点
ctx.translate(250,250);//重新映射画布上的(0,0)位置,即从250,250点为起始点开始绘制,而不是画布左上角的00点
//旋转角度
ctx.rotate(i*30*Math.PI/180);//旋转当前绘图,旋转i*30度,共绘制12个时针的刻度
ctx.beginPath();//开始一条路径,从位置0,-170。创建到达位置0,-190的一条线
ctx.moveTo(0,-170);//之后就会随着角度变化而绘制12个时针刻度
ctx.lineTo(0,-190);//时针刻度宽7,长20
                ctx.closePath();
ctx.stroke();
ctx.restore();//返回之前保存过的路径状态和属性
            }
//分刻度
for(var i=0;i<60;i  ){//注释同时针
                ctx.save();
//分刻度粗细
ctx.lineWidth-5;
ctx.strokeStyle="orangered";
//重置
ctx.translate(250,250);
//旋转角度
ctx.rotate(i*6*Math.PI/180);//旋转6度的倍数
//画分刻度
                ctx.beginPath();
ctx.moveTo(0,-180);//分针刻度宽5,长10
ctx.lineTo(0,-190);
ctx.closePath();
ctx.stroke();
ctx.restore();
}
//时针指针
            ctx.save();
ctx.lineWidth-7;
ctx.strokeStyle="#000";
//设置异次元空间0,0点
ctx.translate(250,250);
//设置角度
ctx.rotate(hour*30*Math.PI/180);//旋转角度小时*30
            ctx.beginPath();
ctx.moveTo(0,-140);//宽度7长度150
ctx.lineTo(0,10);
ctx.closePath();
ctx.stroke();
ctx.restore();
//分针
            ctx.save();
ctx.lineWidth-5;
ctx.strokeStyle="orangered";
//重置
ctx.translate(250,250);
ctx.rotate(min*6*Math.PI/180);//旋转角度分*6度
            ctx.beginPath();
ctx.moveTo(0,-160);
ctx.lineTo(0,15);
ctx.closePath();
ctx.stroke();
ctx.restore();
//秒针
            ctx.save();
ctx.strokeStyle="orchid";
ctx.lineWidth-3;
//重置
ctx.translate(250,250);
ctx.rotate(sec*6*Math.PI/180);
            ctx.beginPath();
ctx.moveTo(0,-170);
ctx.lineTo(0,20);
ctx.closePath();
ctx.stroke();
//设置时针,分针,秒针交叉点
            ctx.beginPath();
ctx.arc(0,0,5,0,360,false);//半径5的一个圆
            ctx.closePath();
//填充样式
//设置笔触样式(秒针已设)
            ctx.stroke();
ctx.fillStyle="wheat";
ctx.fill();
//设置秒针前段小点
            ctx.beginPath();
ctx.arc(0,-150,5,0,360,false);//半径5的一个圆
            ctx.closePath();
ctx.stroke();
ctx.fillStyle="wheat";
ctx.fill();
ctx.restore();
}
drawClock();//调用函数
setInterval(drawClock,1000);//一秒走一次
</script>
</body>
</html>

 


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363119.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第七周

这个作业属于哪个课程C语言程序设计 &#xff08;第三版&#xff09;这个作业要求在哪里2019春季第七周作业我的课程目标学习指针的运用这个作业在哪个具体方面帮助我实现目标这个作业让我知道了指针实用性参考文献无一、2019春第七周作业&#xff08;基础题&#xff09; 7-2 自…

很久没来了,嘿嘿 问候一下大家,O(∩_∩)O哈哈~

很久没来了&#xff0c;嘿嘿。发现上次发帖正好是一个月以前哦&#xff0c;嘿嘿。最近职位火热招聘&#xff0c;有意向的快联系哦&#xff0c;嘿嘿1. BI Technical PM BI Technical PM Job Location: Redmond Oversea education or working background. 2 …

Java EE 8 –为更多设备提供更多应用程序

如果我不喜欢夏天的一件事&#xff0c;那就是事实是没有太多要分享或谈论的新闻。 谁决定将Java Day Tokyo置于这一年的无聊时间里&#xff0c;谁干得不错&#xff0c;就给我一个机会撰写有关新的和即将到来的Java EE 8规范的博客文章&#xff0c;其中包含了更多的思想和建议。…

全局预处理与执行,作用域与作用域链

一.全局预处理 <!DOCTYPE html><html><head lang"en"><meta charset"UTF-8"><title></title></head><body><p>全局预处理&#xff1a;首先会创建一个词法环境(Lexical Environment),然后扫面全局里…

2090. 「ZJOI2016」旅行者 分治,最短路

2090. 「ZJOI2016」旅行者 链接 loj 思路 \((l,mid)(mid1,r)\).考虑跨过mid的贡献。 假设选的中间那条线的点为gzy,贡献为\(dis(x,gzy)dis(gzy,y)\) 那就计算n遍最短路,一次分治为\(n^2mlog{nm}\) 设Sn*m.矩阵的长度是不定的&#xff0c;每次取最长的边进行分治是最好的&#x…

Xshell连接Linux慢问题解决办法

由于各种原因&#xff0c;经常更换网络环境&#xff0c;然后发现&#xff0c;每次更换网络环境后&#xff0c;xshell连接虚拟机的rhel或者CentOS都几乎是龟速.... 今天专门查了一下解决方案&#xff1a; 原来是ssh的服务端在连接时会自动检测dns环境是否一致导致的&#xff0c;…

Gradle入门:依赖管理

即使不是没有可能&#xff0c;创建没有任何外部依赖关系的现实应用程序也是一项挑战。 这就是为什么依赖性管理是每个软件项目中至关重要的部分的原因。 这篇博客文章描述了我们如何使用Gradle管理项目的依赖关系。 我们将学习配置已使用的存储库和所需的依赖项。 我们还将通过…

牛客NOIP暑期七天营-提高组1

牛客NOIP暑期七天营-提高组1 链接 A 边权可为0就排序建一条链子。 但是边权不为0 除了第一个有0的不行。 x连向上一个比他小的数。 期间判断有无解。 #include <bits/stdc.h> #define ll long long using namespace std; const int _2e57; int read() {int x0,f1;char sg…

BZOJ.4009.[HNOI2015]接水果(整体二分 扫描线)

LOJBZOJ洛谷 又是一个三OJ rank1&#xff01;w \(Description\) &#xff08;还是感觉&#xff0c;为啥非要出那种题目背景啊-直接说不好么&#xff09; 给定一棵树和一个路径集合&#xff08;每条路径有一个权值&#xff09;。\(Q\)次询问&#xff0c;每次询问给定一条路径&am…

HTML5常用标签及特殊字符表

*http://html5doctor.com/nav*http://html5doctor.com/article*http://html5doctor.com/section*http://html5doctor.com/asidehttp://html5doctor.com/divhttp://html5doctor.com/figurehttp://html5doctor.com/outlinehttp://html5doctor.com/semantics p 和 span 的理解 p标…

【转载】使用Imaging组件加载GIF动画

Mobil手机加载GIF动态图像的方法有两种&#xff0c;一个就是使用GIF89a标准算法&#xff0c;另一个就是使用SDK自带的Imaging组件&#xff0c;这两种方法是很典型的手机图像处理技术的实践。使用Imaging组件加载GIF比使用标准算法处理高效的多&#xff0c;特别是在处理真彩GIF动…

在Java中获取素数的无限列表

一个常见的问题是确定数字的素因式分解。 蛮力方法是审判部门&#xff08; 维基百科 &#xff0c; 可汗学院 &#xff09;&#xff0c;但是如果必须考虑多个数字&#xff0c;这需要大量的浪费工作。 一种广泛使用的解决方案是Eratosthenes筛&#xff08; 维基百科 &#xff0c…

CF888G XOR-MST trie,贪心

CF888G XOR-MST 链接 CF888G 思路 trie上贪心&#xff0c;先左右两边连边&#xff0c;再用一条边的代价连起左右两颗树。因为内部的边一定比跨两棵树的边权笑&#xff0c;显然是对的。 代码自己瞎yy的。启发式合并 代码 #include <bits/stdc.h> #define ll long long usi…

【处理手记】Configuration system failed to initialize异常的另类原因

有个c#程序在某台电脑上&#xff0c;执行某个操作时&#xff0c;总是会报如图错误&#xff1a; 度娘一番&#xff0c;发现市面上常见的原因是配置文件中的特定节点的位置不对&#xff0c;或者配置文件损坏等等&#xff0c;而这个程序根本没有使用内置的配置文件方案&#xff0c…

学习《Building Applications with FME Objects》 之四 从数据集读取要素

FMEOReader可以访问任何支持格式的数据。 FMEOReader返回两类要素&#xff1a;schema&#xff08;模式&#xff09;要素和数据要素&#xff0c;模式要素用于描述数据集模型。每种支持的格式都有一个模式&#xff0c;一个模式要素是一类要素的数据模型&#xff0c;模式要素描述属…

使用Zapier将应用程序与Neo4j集成

最近&#xff0c;我被带往Zapier &#xff0c;以便在系统之间完成一些轻量级的集成&#xff0c;以快速地进行概念验证。 最初是持怀疑态度的&#xff0c;我发现它确实可以节省时间&#xff0c;并将您从未集成过的系统所有部分捆绑在一起。 而且&#xff0c;这是人们集成他们使…

手机闪屏

表示&#xff0c;本人买了一个华为手机&#xff0c;采用三四个月&#xff0c;就开始闪屏了&#xff0c;手机一划屏就闪&#xff0c;开始的时候表示不能理解&#xff0c;不是手机一般是1年才换吗&#xff1f;突然遇到我也是纠结。 于是乎&#xff0c;浏览了些百度上面的解决方式…

工程能力之C4模型

概述 刚在InfoQ上看到一篇介绍C4Model的文章,觉得这个模型设计的很赞,很有指导意义,做个简单的记录. Why,为什么需要架构图? ThoughtWorks中国 文章中有几句话我觉得很有道理,这里直接摘抄. “纸上的不是架构&#xff0c;每个人脑子里的才是” ; “那些精妙的方案之所以落不了…

[silverlight基础]仿文字连接跑马灯效果-高手绕道

运行效果如下:分析示意图&#xff1a;代码:1<Canvas x:Name"a"Background"AliceBlue"MouseEnter"a_MouseEnter"MouseLeave"a_MouseLeave"Cursor"Hand">2<Canvas.Clip>3<RectangleGeometry RadiusX"0&qu…

Hibernate脏检查的剖析

介绍 持久性上下文使实体状态转换进入队列&#xff0c;该实体状态转换在刷新后转换为数据库语句。 对于托管实体&#xff0c;Hibernate可以代表我们自动检测传入的更改并安排SQL UPDATE。 这种机制称为自动脏检查 。 默认的脏检查策略 默认情况下&#xff0c;Hibernate检查所有…