利用H5api实现时钟的绘制(javascript)


Posted in Javascript onSeptember 13, 2020

HTML5的canvas标签用于绘制图像(通过脚本,通常是 JavaScript)。不过,canvas元素本身并没有绘制能力(它仅仅是图形的容器)必须使用脚本来完成实际的绘图任务。

下面,具体总结了一下使用画布canvas的步骤:

画布:

canvas

在页面上规划出一块空间,canvas标签,通过javascript控制画布完成绘制

1.获取画布

var canvas=document.getElementById("");

2.获取上下文对象 (获取画笔)

var cx=canvas.getContext(“2d”);

3.设置画笔样式

cx.fillStyle=‘red';
cx.strokeStyle=‘blue';

4.开始绘制

下面是对于canvas使用,绘制一个简单钟表的小例子:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
 <script>
 window.onload=function(){
  //1.获取画布
  var canvas=document.getElementById("canvas");
  //2.获取画笔
  var cx=canvas.getContext("2d");
  
  function clock(){
  //3.设置画笔样式
  cx.fillStyle="orange";
  //4.绘制图形
  //绘制表盘
  cx.beginPath();
  cx.arc(300,300,200,0,Math.PI*2)
  cx.closePath();
  cx.fill();
  //绘制时刻度
  cx.lineWidth=2;
  cx.strokeStyle="black";
  for(var i=0;i<12;i++){
   cx.save();
   cx.translate(300,300);
   cx.rotate(i*(Math.PI/6));
   // cx.beginPath();
   cx.moveTo(0,-180);
   cx.lineTo(0,-200);
   // cx.closePath();
   cx.stroke();
   cx.fillStyle="black";
   cx.font="16px blod";
   cx.rotate(Math.PI/6)
   cx.fillText(i+1,-5,-220);
   cx.restore();
  }
  //绘制分刻度
  for(var i=0;i<60;i++){
   cx.save();
   cx.translate(300,300);
   cx.rotate(i*(Math.PI/30));
   cx.beginPath();
   cx.moveTo(0,-190);
   cx.lineTo(0,-200);
   cx.closePath();
   cx.stroke();
   cx.restore();
  }
  //获取当前时间
  var today=new Date();
  var hour=today.getHours();
  var min=today.getMinutes();
  var sec=today.getSeconds();
  hour=hour+min/60;
  //绘制时针
  cx.lineWidth=5;
  cx.save();
  cx.beginPath();
  cx.translate(300,300);
  cx.rotate(hour*(Math.PI/6));
  cx.moveTo(0,10);
  cx.lineTo(0,-100);
  cx.closePath();
  cx.stroke();
  cx.restore();
  //绘制分针
  cx.lineWidth=3;
  cx.save();
  cx.beginPath();
  cx.translate(300,300);
  cx.rotate(min*(Math.PI/30));
  cx.moveTo(0,10);
  cx.lineTo(0,-120);
  cx.closePath();
  cx.stroke();
  cx.restore();
  //绘制秒针
  cx.lineWidth=1;
  cx.strokeStyle="red";
  cx.save();
  cx.beginPath();
  cx.translate(300,300);
  cx.rotate(sec*(Math.PI/30));
  cx.moveTo(0,10);
  cx.lineTo(0,-160);
  cx.closePath();
  cx.stroke();
  cx.restore();
  //绘制交叉处
  cx.fillStyle="#ccc";
  cx.strokeStyle="red";
  cx.save();
  cx.translate(300,300);
  cx.beginPath();
  cx.arc(0,0,5,0,Math.PI*2);
  cx.closePath();
  cx.fill();
  cx.stroke();
  cx.restore();
   setTimeout(clock,1000);
  }
  clock()
 }
 </script>
</head>
<body>
 <canvas id="canvas" width="600px" height="600px" style="background-color: #ccc;"></canvas>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
菜鸟javascript基础资料整理2
Dec 06 Javascript
javascript时区函数介绍
Sep 14 Javascript
封装的jquery翻页滚动(示例代码)
Nov 18 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
May 14 Javascript
javascript实现密码验证
Nov 10 Javascript
原生js和jQuery实现淡入淡出轮播效果
Dec 25 Javascript
jQuery简单操作cookie的插件实例
Jan 13 Javascript
总结Javascript中数组各种去重的方法
Oct 04 Javascript
微信小程序 在线支付功能的实现
Mar 14 Javascript
JavaScript实现职责链模式概述
Jan 25 Javascript
Javascript Dom元素获取和添加详解
Sep 24 Javascript
如何优雅地取消 JavaScript 异步任务
Mar 22 Javascript
浅谈javascript事件环微任务和宏任务队列原理
Sep 12 #Javascript
返回上一个url并刷新界面的js代码
Sep 12 #Javascript
Vue和React有哪些区别
Sep 12 #Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
Sep 12 #Javascript
解决vue项目 build之后资源文件找不到的问题
Sep 12 #Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
Sep 12 #Javascript
vue v-on:click传递动态参数的步骤
Sep 11 #Javascript
You might like
PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
第五章 php数组操作
2011/12/30 PHP
PHP对象、模式与实践之高级特性分析
2016/12/08 PHP
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
一个简单的网站访问JS计数器 刷新1次加1次访问
2012/09/20 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
javascript入门之window对象【新手必看】
2016/11/22 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
js仿微信公众平台打标签功能
2017/04/08 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
在vue项目中使用Nprogress.js进度条的方法
2018/01/31 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
2018/05/16 Javascript
对vue 键盘回车事件的实例讲解
2018/08/25 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2020/11/12 Javascript
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
代码详解django中数据库设置
2019/01/28 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
解决python虚拟环境切换无效的问题
2020/04/30 Python
python 如何上传包到pypi
2020/12/24 Python
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
2017/09/15 HTML / CSS
以下为Windows NT 下的32 位C++程序,请计算sizeof 的值
2016/12/07 面试题
入党积极分子思想汇报
2014/01/02 职场文书
项目计划书范文
2014/01/09 职场文书
财务会计自荐信范文
2014/02/21 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
同学聚会开幕词
2019/04/02 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
spring 项目实现限流方法示例
2022/07/15 Java/Android
使用Cargo工具高效创建Rust项目
2022/08/14 Javascript