在页面上加入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绘制时钟的更多相关文章

  1. 用canvas绘制时钟

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

  2. 基于canvas的原生JS时钟效果

    概述 运用html5新增画布canvas技术,绘制时钟效果,无需引用任何插件,纯js. 详细 代码下载:http://www.demodashi.com/demo/11935.html 给大家介绍一个 ...

  3. Canvas绘制时钟

    ①首先在HTML的body标签中添加一个canvas标签,用于绘制时钟. <canvas id="myCanvas" width="600" height ...

  4. 使用canvas绘制时钟

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

  5. html5 Canvas绘制时钟以及绘制运动的圆

    1.绘制时钟 <!-- js代码 --> <script type="text/javascript"> window.onload=function(){ ...

  6. 小任务之Canvas绘制时钟

    背景图的绘制(大圆.数字.小圆点) 掌握基础知识:圆的绘制(arc方法),关于圆的弧度的计算,数学中关于sin cos的用法 圆的弧度为2*Math.PI 12个数字分得弧度每个为2*Math.PI/ ...

  7. 基础canvas应用-钟表绘制

    首先,canvas语法基础薄弱的小伙伴请点这里,剩下的小伙伴们可以接着往下看了. 一个表,需要画什么出来呢:3条线(时分秒针),1个圆(表盘),以及60条短线/点(刻度). 嗯,没毛病. 那接下来让我 ...

  8. 公告栏添加时钟——利用canvas画出一个时钟

    前言 最近在学习HTML5标签,学到Canvas,觉得很有趣.便在慕课网找了个demo练手.就是Canvas时钟. 对于canvas,w3shcool上是这么描述的: HTML5 <canvas ...

  9. Canvas基础——钟表绘制

    首先,canvas语法基础薄弱的小伙伴请点这里,剩下的小伙伴们可以接着往下看了. 一个表,需要画什么出来呢:3条线(时分秒针),1个圆(表盘),以及60条短线/点(刻度). 嗯,没毛病. 那接下来让我 ...

随机推荐

  1. IOS开发-ObjC-对象、封装

    C语言是基于过程的一种编程语言,而OC语言是基于对象的一种语言. C是和其他的面向对象的语言的区别在于C语言更注重地层操作,思维方式相比面向对象的语言而言更接近机器的思维方式,而面向对象的语言更接近于 ...

  2. Microsoft Visual 的变态

    Microsoft Visual 里面使用指针 的时候, 声明要放在函数开始的位置,否则报错,真变态啊 刚刚发现,C的变量必须在语块开始声明,后面声明会报错,太不灵活了

  3. Python3基础 frozenset() 创建一个不可更改的集合

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

  4. Motion-Based Multiple Object Tracking

    kalman filter tracking... %% Motion-Based Multiple Object Tracking % This example shows how to perfo ...

  5. Html 定位position

    CSS position属性和实例应用   目前几乎所有主流的浏览器都支持position属性("inherit"除外,"inherit"不支持所有包括IE8和 ...

  6. PHP 单态设计模式复习

    单态设计模式,也可以叫做单例设计模式, 就是一个类只能让它生成一个对象,避免重复的NEW,影响运行效率(每NEW一个对象都会在内存中开辟一块空间) 示例代码 <?php /* * 单态设计模式 ...

  7. Spring学习笔记IOC与AOP实例

    Spring框架核心由两部分组成: 第一部分是反向控制(IOC),也叫依赖注入(DI); 控制反转(依赖注入)的主要内容是指:只描述程序中对象的被创建方式但不显示的创建对象.在以XML语言描述的配置文 ...

  8. Java 页面的工具包

    所谓工具包,是指把页面的功能划分出来,放到另外一个包里面.方面工程管理.结构清晰.团队协作等. 根据原来的例子:要做一个com.myweb包的工具包com.myweb.tool 为导航栏统一创建接口 ...

  9. js动态控制table的tr,td增加及删除

    html: <table id='wifi_clients_table'   class="table table-striped table-bordered table-hover ...

  10. 利用PHPCMS V9站群功能建立分站

    hosts文件就在C:\Windows\system32\drivers\etc\hosts下 用一套CMS软件系统,做多个网站,统一管理,用户可以互通,这就是所谓的站群功能.这对于运营和维护都能节省 ...