用canvas的arc绘制时钟
在页面上加入canvas标签:
<body>
<canvas id="c1" width="600px" height="600px">
<span>不支持canvas浏览器</span>
</canvas> <!--默认:宽300 高150-->
</body>
js部分:
绘制秒的刻度的思路是先用oGC.stroke()循环画60个6°的扇形,将它们拼接成一整个圆,然后用oGC.fill()画一个实心的圆,半径比之前拼接的那个圆短,用实心的圆挡住中间多余的线,这样秒的刻度就画出来了,以此类推可以画出分的刻度;
让时钟自动走起来:获取new Date()下的真实时、分、秒时间,然后用‘角度*Math.PI/180=弧度’的公式换算成弧度,赋值给时针、分针、秒针的圆中对应的弧度值,注意:弧度的变化是沿着顺时针的方向增加的,也就是在秒针指向0秒时,它的弧度是-90°。最后设置一个定时器,每隔1s调用一次封装的函数:
<script>
window.onload = function(){
var oC = document.getElementById('c1');
var oGC = oC.getContext('2d'); function toDraw(){
var a = 200;
var b = 200;
var r = 100; oGC.clearRect(0,0,oC.width,oC.height); //获取时间
var oDate = new Date();
var oHour = oDate.getHours();
var oMin = oDate.getMinutes();
var oSec = oDate.getSeconds(); var oHourvalue = (-90 + oHour*30 + oMin/2 )*Math.PI/180;
var oMinvalue = (-90 + oMin*6 )*Math.PI/180;
var oSecvalue = (-90 + oSec*6 )*Math.PI/180; //绘制秒的刻度
oGC.beginPath();
for(var i=0;i<60;i++){
oGC.moveTo(a,b);
oGC.arc(a,b,r,6*i*Math.PI/180,6*(i+1)*Math.PI/180,false);
}
oGC.closePath();
oGC.stroke(); oGC.fillStyle = 'white';
oGC.beginPath();
oGC.moveTo(a,b);
oGC.arc(a,b,r*19/20,0,360*Math.PI/180,false);
oGC.closePath();
oGC.fill(); //绘制分的刻度
oGC.lineWidth = 3;
oGC.beginPath();
for(var i=0;i<12;i++){
oGC.moveTo(a,b);
oGC.arc(a,b,r,30*i*Math.PI/180,30*(i+1)*Math.PI/180,false);
}
oGC.closePath();
oGC.stroke(); oGC.fillStyle = 'white';
oGC.beginPath();
oGC.moveTo(a,b);
oGC.arc(a,b,r*17/20,0,360*Math.PI/180,false);
oGC.closePath();
oGC.fill(); //绘制时针
oGC.lineWidth = 4;
oGC.beginPath();
oGC.moveTo(a,b);
oGC.arc(a,b,r*13/20,oHourvalue,oHourvalue,false);
oGC.closePath();
oGC.stroke(); //绘制分针
oGC.lineWidth = 2;
oGC.beginPath();
oGC.moveTo(a,b);
oGC.arc(a,b,r*18/20,oMinvalue,oMinvalue,false);
oGC.closePath();
oGC.stroke(); //绘制秒针
oGC.beginPath();
oGC.moveTo(a,b);
oGC.arc(a,b,r*19/20,oSecvalue,oSecvalue,false);
oGC.closePath();
oGC.stroke();
};
setInterval(toDraw,1000);
};
</script>
用canvas的arc绘制时钟的更多相关文章
- 用canvas绘制时钟
用canvas做时钟其实很简单,下面是我做出的效果: 是不是还挺漂亮的? 下面上代码: html <div class="whole"> <canvas id=& ...
- 基于canvas的原生JS时钟效果
概述 运用html5新增画布canvas技术,绘制时钟效果,无需引用任何插件,纯js. 详细 代码下载:http://www.demodashi.com/demo/11935.html 给大家介绍一个 ...
- Canvas绘制时钟
①首先在HTML的body标签中添加一个canvas标签,用于绘制时钟. <canvas id="myCanvas" width="600" height ...
- 使用canvas绘制时钟
使用canvas绘制时钟 什么使canvas呢?HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.<canvas> 标签只是图 ...
- html5 Canvas绘制时钟以及绘制运动的圆
1.绘制时钟 <!-- js代码 --> <script type="text/javascript"> window.onload=function(){ ...
- 小任务之Canvas绘制时钟
背景图的绘制(大圆.数字.小圆点) 掌握基础知识:圆的绘制(arc方法),关于圆的弧度的计算,数学中关于sin cos的用法 圆的弧度为2*Math.PI 12个数字分得弧度每个为2*Math.PI/ ...
- 基础canvas应用-钟表绘制
首先,canvas语法基础薄弱的小伙伴请点这里,剩下的小伙伴们可以接着往下看了. 一个表,需要画什么出来呢:3条线(时分秒针),1个圆(表盘),以及60条短线/点(刻度). 嗯,没毛病. 那接下来让我 ...
- 公告栏添加时钟——利用canvas画出一个时钟
前言 最近在学习HTML5标签,学到Canvas,觉得很有趣.便在慕课网找了个demo练手.就是Canvas时钟. 对于canvas,w3shcool上是这么描述的: HTML5 <canvas ...
- Canvas基础——钟表绘制
首先,canvas语法基础薄弱的小伙伴请点这里,剩下的小伙伴们可以接着往下看了. 一个表,需要画什么出来呢:3条线(时分秒针),1个圆(表盘),以及60条短线/点(刻度). 嗯,没毛病. 那接下来让我 ...
随机推荐
- IOS开发-ObjC-对象、封装
C语言是基于过程的一种编程语言,而OC语言是基于对象的一种语言. C是和其他的面向对象的语言的区别在于C语言更注重地层操作,思维方式相比面向对象的语言而言更接近机器的思维方式,而面向对象的语言更接近于 ...
- Microsoft Visual 的变态
Microsoft Visual 里面使用指针 的时候, 声明要放在函数开始的位置,否则报错,真变态啊 刚刚发现,C的变量必须在语块开始声明,后面声明会报错,太不灵活了
- Python3基础 frozenset() 创建一个不可更改的集合
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...
- Motion-Based Multiple Object Tracking
kalman filter tracking... %% Motion-Based Multiple Object Tracking % This example shows how to perfo ...
- Html 定位position
CSS position属性和实例应用 目前几乎所有主流的浏览器都支持position属性("inherit"除外,"inherit"不支持所有包括IE8和 ...
- PHP 单态设计模式复习
单态设计模式,也可以叫做单例设计模式, 就是一个类只能让它生成一个对象,避免重复的NEW,影响运行效率(每NEW一个对象都会在内存中开辟一块空间) 示例代码 <?php /* * 单态设计模式 ...
- Spring学习笔记IOC与AOP实例
Spring框架核心由两部分组成: 第一部分是反向控制(IOC),也叫依赖注入(DI); 控制反转(依赖注入)的主要内容是指:只描述程序中对象的被创建方式但不显示的创建对象.在以XML语言描述的配置文 ...
- Java 页面的工具包
所谓工具包,是指把页面的功能划分出来,放到另外一个包里面.方面工程管理.结构清晰.团队协作等. 根据原来的例子:要做一个com.myweb包的工具包com.myweb.tool 为导航栏统一创建接口 ...
- js动态控制table的tr,td增加及删除
html: <table id='wifi_clients_table' class="table table-striped table-bordered table-hover ...
- 利用PHPCMS V9站群功能建立分站
hosts文件就在C:\Windows\system32\drivers\etc\hosts下 用一套CMS软件系统,做多个网站,统一管理,用户可以互通,这就是所谓的站群功能.这对于运营和维护都能节省 ...