canvas时钟案例

canvas画时钟 canvas画时钟 今天我们来学习学习如何使用canvas画时钟 首先我们得了解一下canvas是什么,怎么使用它: Canvas 中文名称叫“画布”,通过 JavaScript 来绘制 2D 图形,是 HTML 5 中新增的元素。 它最大得特点就是绘制它需要使用脚本绘制。canvas拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。 首先在html5中添加canvas元素,规定元素的id ,width,和height,这次的高度和宽度我习惯用js书写。 <canvas id="canvas"& 阅读详情
一、时钟案例

在这里插入图片描述
代码展示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>时钟案例</title>
    <style type="text/css">
        div {text-align: center;margin-top: 250px;}
        #clock{border: 1px solid #ccc; }
    </style>
</head>
<body>
    <div><canvas id="clock" width="300" height="300"></canvas></div>
    <script src="js/clock.js" type="text/javascript" charset="utf-8"></script>
</body>
</html>
/* 绘制时钟 */
var canvas = document.getElementById('clock');
//画笔
var ctx = canvas.getContext('2d');
//获取到画布的宽高
var width = ctx.canvas.width;
var height = ctx.canvas.height;
//定义半径
var r = width/2;
//绘制表盘
function drawBackground() {
    ctx.save();
    
    ctx.translate(r,r);
    ctx.beginPath();
    ctx.lineWidth = 10;
    ctx.arc(0,0,r-ctx.lineWidth/2,0,Math.PI*2,false);
    ctx.closePath();
    ctx.stroke();

    // 刻度(时刻度、分刻度)
	// 绘制时刻度
    var arr = [3,4,5,6,7,8,9,10,11,12,1,2];
    //遍历出各刻度值
    arr.map(function(num,i){
        //确定每刻度所占的弧度
        var rad = 2*Math.PI/12 *i;
        //确定各个刻度点的x,y坐标
        var x = Math.cos(rad)*(r-30);
        var y = Math.sin(rad)*(r-30);
        //设置字体
        ctx.font="18px Arial";
        ctx.textAlign="center"//左右对齐
		ctx.textBaseline="middle"//水平对齐
        // 绘制文字(小时)
        ctx.fillText(num, x, y);
    })
    //绘制出分钟数的刻度线
    for (var i = 0; i < 60; i++){
        //计算出每个刻度的弧度
        var rad = 2*Math.PI/60 *i;
        ctx.beginPath();
        
        //确定刻度点的x ,y
        var x = Math.cos(rad)*(r-18);
        var y = Math.sin(rad)*(r-18);
        if(i%5==0){
            ctx.fillStyle="#000"
            //开始画
            ctx.arc(x,y,2,0,2*Math.PI,false);
        }else{
            ctx.fillStyle="#ccc"
            //开始画
            ctx.arc(x,y,2,0,2*Math.PI,false);
        }
        //绘制
        ctx.fill();
    }
}

//第二部分 
//开始绘制时针
function drawHour(hour,minute){
    ctx.save();
    var rad = 2*Math.PI / 12 * hour;
    var mad = 2*Math.PI / 12 / 60 * minute;
    ctx.rotate(rad+mad);
    
    ctx.lineCap = 'round';
    ctx.beginPath();
    ctx.lineWidth = 6;
    ctx.moveTo(0,10);
    ctx.lineTo(0,-r/2);

    ctx.stroke();
    ctx.restore();
}
//开始绘制分针
function drawMinute(minute){
    ctx.save();
    // 每分钟的弧度
    var rad = 2*Math.PI / 60 * minute
    // 设置旋转
    ctx.rotate(rad)

    ctx.beginPath();
    ctx.lineCap = 'round';
    ctx.lineWidth = 3
    ctx.moveTo(0,10);
    ctx.lineTo(0,-r+60);

    ctx.stroke();
    ctx.restore();
}
//开始绘制秒针
function drawSecond(second){
    ctx.save();
    // 每秒钟的弧度
    var rad = 2*Math.PI / 60 * second
    // 设置旋转
    ctx.rotate(rad)
    ctx.beginPath();
    ctx.fillStyle="red"
    // 移动起点
    ctx.moveTo(-2,20)
    // 从起点绘制 -号是方向向上
    ctx.lineTo(2,20);
    ctx.lineTo(1,-r+20)
    ctx.lineTo(-1,-r+20)

    ctx.fill();
    ctx.restore();
}
// 绘制时钟的圆点
function drawDot(){
	ctx.beginPath()
	ctx.fillStyle="#fff"
	ctx.arc(0,0,5,0,2*Math.PI,false);
	ctx.fill()
}
//绘制
function draw(){
	// 清除画布
	ctx.clearRect(0,0,width,height)
	// 获取当前的时间
	var now =new Date();
	var hour= now.getHours()
	var min= now.getMinutes()
	var second= now.getSeconds()
	drawBackground();
	drawHour(hour,min)
	drawMinute(min);
	drawSecond(second);
	drawDot()
	ctx.restore()
}
setInterval(draw,1000);//使用定时器执行整个绘画方法
HTML5 Canvas时钟效果全解析 本文还有配套的精品资源,点击获取 简介:HTML5的Canvas元素提供了一个绘图区域,允许开发者利用JavaScript创建动态的2D图形。本课程设计项目演示了一个具体的时钟效果实现,其中涉及了表盘、时分秒针的绘制和数字时间显示。通过学习这个项目,学生可以深入理解Canvas的基本使用、绘图方法、时间与动画处理,以及如何优化性能和考虑浏览器兼容性。 1. Can... 阅读详情

相关推荐

QMT vs Ptrade:量化交易新手如何根据需求选择券商系统(附实战案例)

本文对比了QMT和Ptrade两大券商量化交易系统的核心差异,帮助量化交易新手根据需求选择合适的平台。QMT适合技术面策略开发,执行效率高;Ptrade则提供全面的财务数据和复杂策略支持。通过实战案例,展示了如何结合两平台优势实现高效量化交易。

weixin_42683394的博客 527

如何绘制精美时钟Canvas

如何绘制精美时钟Canvas   绘制时钟Canvas需要的知识点 getContext() getContext()判断浏览器是否支持canvas,可以通过canvas的getContext()方法来查看是否成功获取对象。我们用的最基本的绘图环境在canvas中绘图,通过调用canvas对象的getContext()方法来获取绘图环境。getContext()方法只需要一个参数:绘图环境

qq_23924959的博客 522

英飞凌TLF35584 SBC实战:手把手教你配置WDG看门狗与ERR监控(基于AUTOSAR架构)

本文详细介绍了基于AUTOSAR架构的英飞凌TLF35584 SBC芯片WDG看门狗与ERR监控功能的配置方法。通过硬件平台搭建、寄存器级配置、AUTOSAR模块集成及诊断策略优化,帮助开发者快速掌握关键配置技巧,提升嵌入式系统的安全性和可靠性。

weixin_30256901的博客 477

分针网—IT教育:Cnavas绘制时钟

Cnavas绘制时钟 背景图的绘制(大圆、数字、小圆点),掌握基础知识:圆的绘制(arc方法),关于圆的弧度的计算,数学中关于sin cos的用法 html lang="en"> head> meta charset="UTF-8">

分针网 509

UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 0-4: ordinal not in range(128)

python3报错处理:UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-4: ordinal not in range(128) 一、报错场景 // 报错代码 Traceback (most recent call last): File "test_autoo3_2.py", line 214, in <module> main() File "test_autoo3_2.py",

浪里小飞侠的博客 4201

PHP版本对接支付宝支付接口 电脑网站 详细介绍 沙箱环境 超简单易懂

PHP版本对接支付宝支付接口 其实理顺了思路后,按照我接下来的步骤来,真的超级简单啊,为啥有那么多的朋友们折腾了那么久呢,嘿嘿,跟我走吧~ 我是昨天晚上洗完澡之后,大概八九点,才开始正式开工尝试去这一工程的,我去支付宝的蚂蚁金服开放平台里把各个知识点和文档大概都看了一遍,大致弄明白了要怎么操作了,建议大家看看电脑网站开发文档,忙到了夜里十二点左右,成功地用支付宝给的Demo完成了付款操...

爱玲姐姐的博客 1万+

Canvas实现自定义时钟

实现效果 除了皮卡丘背景外的刻度线,时针分针秒针均是使用Canvas绘制出来的。 实现过程 设置基本大小及背景 1. 皮卡丘全脸素材 2. 基本结构 设置HTML结构如下: <div class="canvas-box"> <canvas width="300" height="300"></canvas> </div> 问题:这里为什么要外嵌一个div盒子呢? 因为后续我们通过给div设置背景图片backgroun

HYY的博客 975

【Unity3D优化】优化内置shader的内存占用

在打AB包的过程中,并不会把这些Built-in的shader单独打包,并与材质球和预设体做好依赖,因此打AB包时,Unity会自行在材质球和预制体的AB包内每一个都包含进去用到的Built-in的Shader,而且运行时,由于加载的是不同的AB包,shader也是不同的实例,占用的也是多份内存。结合项目特点可以分析,由于项目里使用了大量的粒子特效,一些特殊的效果,会给特效师写定制的shader,但是这些常见的效果,特效师直接使用了Unity Built-in的shader。继续优化内存占用。

a310989583的专栏 2312

canvas 案例——时钟

首先先理解几个方法: 1、save()和restore():这对法宝非常有用,两个配对使用,saved方法用于临时保存画布的坐标系统的状态;restore方法用来恢复save之后保存的状态。可以简单的理解为,save之后的一系列的操作,比如translate和rotate等,在restore后,都会被释放恢复到原来的坐标状态。 eg: ctx.strokeStyle = '...

yemuxia_sinian的博客 969

1、开启 Microsoft Power Automate 自动化之旅

本文介绍了 Microsoft Power Automate 的基本概念和其在信息时代自动化需求中的重要作用。Power Automate 是 Power Platform 的一部分,能够通过无代码/低代码的方式自动化处理重复性任务,例如邮件处理、文件复制等,从而提升工作效率。文章还详细讲解了 Power Automate 的核心术语、登录方式、创建第一个流程的操作步骤,并通过示例帮助用户快速上手。无论是终端用户还是管理员,都可以通过本文了解如何利用 Power Automate 实现业务流程自动化。

corn8的博客 169

【论文解读--Xdog】新型电驱式四足机器人研制与测试

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、四足机器人体型大小和驱动方式的比较二、四足机器人设计一些重要的结论三、系统控制框架四、系统硬件框架五、力位混合控制(阻抗控制)六、侧向平衡控制(和VMC如出一辙)七、电机驱动系统研制(FOC磁场定向控制)总结 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对新型电驱式四足机器人研制与测试做个简单的介绍,具体内容后续再更,其他模块可以参

qq_35635374的博客 3726

Canvas圆形时钟

  今天带来一个圆形时钟,用JQ编写的Canvas 代码。Canvas 的神奇之处就在于,可以自行绘制图片不需要外部引入,当你深入了解这项技术的时候,你也会忍不住赞叹他的神奇之处。   虽然我一再强调,自学也是人生的一门必修课。但哪怕我接连几天不眠不休写出了 Canvas 教程,大家还是置若罔闻,要求我在代码中写下详细注释。从我的角度来讲:不写注释可以减少代码量,大批量的注释会显得十分冗余,我出的 Canvas 教程如果大家认真阅读、练习的话,读懂这些代码不成问题。就好像对着官方文档我可以手写JQuery

weixin_45820444的博客 4057

HFSS仿真PCB射频通路间的隔离度

本文介绍HFSS方式仿真带有器件的射频通路间的隔离度,可视为CST方式的补充,二者的结果相互参照。在前期靠仿真确认风险点时,可以作为一种较为直观和可信的手段。

sinat_15150363的博客 1525

canvas 时钟案例

<!doctype html><html><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, ...

weixin_30256505的博客 104

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【canvas 动态时钟】

画一个动态时钟,显示 当前时间 <!DOCTYPE html> <html> <body> <canvas id="canvas" width="350" height="350" style="border:1px solid"> Your browser does not support the canvas element. ...

Hey_Coder 387

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Canvas 画时钟

前言不管学习什么,不动手去做,永远不能熟练掌握。学习了 canvas API,会觉得只要按照直线、圆等画法去画,canvas 太简单了。可是,当你真正去画的时候,会遇到许多的问题。下面介绍的是 canvas 时钟,主要是与大家分享我的学习过程。 不懂 canvas 的同学,请先学习:Canvas 画布 一、相关几何知识钟面是一个圆,主要包含每个小时数字、以及刻度,它们的位置坐标应该如何计

destiny'Note 6174

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

canvas之时钟

在画时钟之前,我们先来聊一聊canvas动画。 驱动动画的方法有以下三种:那么我们制作canvas动画使用哪种更好呢?所以在制作canvas动画时,更推荐使用。制作canvas动画的步骤:那么就让我们看看时钟的动画制作吧: 效果如下:

时光清浅处,一步一安然 411

canvas时钟

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>canvas 时钟</title> <style> * { margin: 0; padding: 0; } .main { width: 1000px; ...

liu_xiaoru的博客 297

canvas实现时钟案例

一.html <canvas id="clock" width="500" height="500" >你的浏览器不支持canvas</canvas> 二.css canvas{ background: #000; } 三.js <script> /* 难点1:怎样把时刻线绘制出来 难点2: 时间指针的旋转角度 秒:360/6...

weixin_45389051的博客 414

canvas画时钟小案例

利用canvas画一个时钟的案例

qq_53245972的博客 204

canvas绘制时钟

canvas绘制时钟的展示;canvas是HTML5新增的元素,通过javascript脚本绘制图形;那么canvas可以用来干啥呢?制作web网页游戏数据可视化;即:echarts就是基于canvas进行绘制广告banner的动态效果,视频的弹幕效果canvas还可以用来内嵌一些网页手写签名等…点击进入查看canvas的系列学习在这里我添加了一个时钟的绘制,呈现的效果如下:这里采用的是俩个canvas的形式进行圆刻度表与指针分开的绘制;} h1 {

一个小白的成长历程 1031

Canvas模拟时钟

&lt;!doctype html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="utf-8"&gt; &lt;title&gt;模拟时钟&lt;/title&gt; &lt;style type="text/css"&gt; body{ text-align: center; } canvas{

笺赕 344

Canvas时钟

H5 Canvas 时钟

一个有味道的Weber 888

canvas实现时钟

&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;canvas id="can" width=&

qq_36276469的博客 219
上一篇: HTML5笔记总结(二)
下一篇: HTML5笔记总结(三)SVG
智汇风渔AI小白
博客等级 码龄7年 1万+粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智汇风渔AI小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值