八卦图:

<body>
canvas id=" myCanvas" width="" height= ”"></canvas>
<script>
//获取到画布元素
let myCanvas = document.getElementById( "myCanvas );
//通过画布元素获取到上下文(画笔)
let ctx = myCanvas.getContext("2d" );
//右边白色的半圆
ctx.fillstyle =“#fff";
ctx.beginPath();
ctx.arc(, , , (Math.PI / ) * , (Math.PI / ) * );
ctx.fill();
//左边黑色的圆
ctx.fillstyle = #";
ctx.beginPath();
ctx.arc(, , , (Math.PI / ) * , (Math.PI / ) * , true);
ctx.fill();
//左边白色的小圆
ctx.fillstyle = "#fff";
ctx.beginPath();
ctx.arc(, ,, (Math.PI / ) * , (Math.PI / ) ., true);
ctx.fill();
//右边黑色的小圆
ctx.fillstyle =“#” ;
ctx.beginPath();
ctx.arc(, , , (Math.PI / ) * , (Math.PI / ) * );
ctx.fill();
//黑色的小圆点
ctx.fillstyle =“#" ;
ctx.beginPath();
ctx.arc(, , , , Math.PI * );
ctx.fill();
//白色的小圆点
ctx.fillstyle =“#fff";
ctx.beginPath();
ctx.arc(, , , , Math.PI * );
ctx.fill();
</script>
</body>

时钟:

<body>
<canvas id="myCanvas" width="500" height="400">
很抱歉,你的浏览器不支持canvas元素
</canvas>
<script>
var c = document.getElementById('myCanvas');//获取Canvas对象
var ctx = c.getContext('2d');//获取上下文
function drawClock()
{
ctx.clearRect(0,0, c.width, c.height);//清除画布
c.width = c.width;//清除画布时需要重置宽度,否则会有一个画布的重叠
var x = 250,y = 200,r = 180;//定义圆盘的中心坐标和圆盘的半径
/*获取实际的时间*/
var objTime = new Date();
var objHour = objTime.getHours();
var objMin = objTime.getMinutes();
var objSen = objTime.getSeconds();
/*将时间转换为具体的弧度*/
/*
* 因为时钟是从12点的位置算作开始,但是canvas是3点钟的位置算作0度,所以-90度指向12点方向
* 时针是每小时相隔30度,objMin/2是为了做出当分针过半时,时针也相应的处于两个小时之间
* 分针和秒针是每次相隔6度
*/
var arcHour = (-90+objHour*30 + objMin/2)*Math.PI/180;
var arcMin = (-90+objMin*6)*Math.PI/180;
var arcSen = (-90+objSen*6)*Math.PI/180;
/*绘制圆盘*/
ctx.beginPath();
for(var i=0;i<60;i++)//一共360度,一共60分钟,每分钟相隔6度,360/6=60
{
ctx.moveTo(x,y);
ctx.arc(x,y,r,6*i*Math.PI/180,6*(i+1)*Math.PI/180,false);
}
ctx.closePath();
ctx.stroke();
/*绘制白盘盖住下面的线*/
ctx.fillStyle = 'white';
ctx.beginPath();
ctx.arc(x,y,r*19/20,0,360*Math.PI/180,false);//半径取值为r的20分之19
ctx.closePath();
ctx.fill();
/*依葫芦画瓢,制作每一个小时的线*/
/*绘制圆盘*/
ctx.beginPath();
ctx.lineWidth = 3;
for(var i=0;i<12;i++)//一共360度,一共12个小时,每小时相隔30度,360/30=12
{
ctx.moveTo(x,y);
ctx.arc(x,y,r,30*i*Math.PI/180,30*(i+1)*Math.PI/180,false);
}
ctx.closePath();
ctx.stroke();
/*绘制白盘盖住下面的线*/
ctx.fillStyle = 'white';
ctx.beginPath();
ctx.arc(x,y,r*18/20,0,360*Math.PI/180,false);//半径取值为r的20分之18
ctx.closePath();
ctx.fill();
/*开始绘制时针分针和秒针,技巧就是起始弧度和结束弧度值一样*/
/*开始绘制时针*/
ctx.beginPath();
ctx.moveTo(x,y);
ctx.lineWidth = 7;
ctx.lineCap = 'round';
ctx.arc(x,y,r*10/20,arcHour,arcHour,false);//半径取值为r的20分之10
ctx.stroke();
ctx.closePath();
/*开始绘制分针*/
ctx.beginPath();
ctx.moveTo(x,y);
ctx.lineWidth = 5;
ctx.lineCap = 'round';
ctx.arc(x,y,r*12/20,arcMin,arcMin,false);//半径取值为r的20分之12
ctx.stroke();
ctx.closePath();
/*开始绘制秒针*/
ctx.beginPath();
ctx.moveTo(x,y);
ctx.lineWidth = 2;
ctx.lineCap = 'round';
ctx.arc(x,y,r*16/20,arcSen,arcSen,false);//半径取值为r的20分之16
ctx.stroke();
ctx.closePath();
}
setInterval('drawClock()',1000);//每隔1秒调用绘制时钟函数
</script>
</body>

canvas-八卦图和时钟实现的更多相关文章

  1. canvas画布——画八卦图

    实例 创建一个圆形: var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d") ...

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

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

  3. Aristochart – 灵活的 HTML5 Canvas 折线图

    Aristochart 是基于 HTML5 Canvas 的折线图功能库,具有高定制性和灵活性的特点.Aristochart 会帮助你处理图形显示,让你能够专注于业务逻辑处理. 您可能感兴趣的相关文章 ...

  4. 使用CSS达到阴阳八卦图等图形

    CSS还是比較强大的,能够实现中国古典的"阴阳八卦图"等形状. 正方形 #rectangle { width: 200px; height: 100px; backgrount-c ...

  5. 用CSS伪类制作一个不断旋转的八卦图?

    前言 介绍一下如何制作一个不断旋转的八卦图.快速预览代码及效果,点击:八卦图 代码如下: HTML部分 <!DOCTYPE html> <html> <head> ...

  6. 用CSS实现阴阳八卦图等图形

    CSS还是比较强大的,可以实现中国古典的"阴阳八卦图"等形状. 正方形 #rectangle { width: 200px; height: 100px; backgrount-c ...

  7. css实例——“旋转”太极八卦图

    话不多说,直接上代码: HTML代码部分: <!DOCTYPE html> <html> <head> <meta charset="utf-8&q ...

  8. canvas 绘制八卦图

    绘制要点: 1.getContext('2d'); -->绘图环境,2维空间 2.fillRect(x,y,w,h); -->矩形:实心(黑色背景) 3.strokeRect(x,y,w, ...

  9. [html5] canvas 绘图:八卦图

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title&g ...

随机推荐

  1. 4 个独特的 Linux 终端模拟器(转)

    4 个独特的 Linux 终端模拟器 译自:https://www.linux.com/blog/learn/2018/12/4-unique-terminals-linux作者: Jack Wall ...

  2. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_22-页面静态化-静态化测试-静态化程序测试

    测试service内些的静态化的方法 先新建一个测试类 模板的id 放到下拉的静态数据里面 这样这条数据 就是用用的轮播图005这个模板 把这条数据静态化 进入到断点里面.先获取数据模型 获取模板时 ...

  3. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_06-vuejs研究-vuejs基础-v-on指令

    3.v-on绑定一个按钮的单击事件 计算的按钮上加事件 点击计算的按钮,弹出的事件 定义一个Result的变量

  4. 一百三十六:CMS系统之发布帖子后台逻辑

    模型 class PostModel(db.Model): __tablename__ = 'post' id = db.Column(db.Integer, primary_key=True, au ...

  5. 用alert打印js对象

    用alert查看对象: function writeObj(obj){ var description = ""; for(var i in obj){ var property= ...

  6. 提示/bin/roslyn/csc.exe权限不足

    给/bin/roslyn/csc.exe 读取/执行 权限

  7. Linux基础(特基本的那种)知识

    (自己的随手笔记,记得有点乱请轻喷) which:查看某个命令的完整路径df -h:查看系统磁盘情况history:查看历史输入的命令 网卡配置路径:vim /etc/sysconfig/networ ...

  8. 【ARM-Linux开发】Linux下更改目录下所有文件的所有者及其权限

    [ARM-Linux开发]Linux下更改目录下所有文件的所有者及其权限 chown 更换所有者: chmod 改变权限: 想一次修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,要使用参 ...

  9. Java学习笔记-枚举类

    实例有限且固定的类成为枚举类 枚举类的实现 早期时候的实现形式: public static final int SEASON_SPRING = 1; public static final int ...

  10. 最新 欢聚时代java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.欢聚时代等10家互联网公司的校招Offer,因为某些自身原因最终选择了欢聚时代.6.7月主要是做系统复习.项目复盘.Leet ...