【Canvas与艺术】绘制简单线条时钟

【效果】

【代码】

<!DOCTYPE html>
<html lang="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<head><title>65.绘制简单时钟</title><style type="text/css">.centerlize{margin:0 auto;width:1200px;}</style></head><body οnlοad="init();"><div class="centerlize"><canvas id="myCanvas" width="512px" height="512px" style="border:1px dotted black;">如果看到这段文字说您的浏览器尚不支持HTML5 Canvas,请更换浏览器再试.</canvas><canvas id="hideCanvas" width="100px" height="100px" /></div></body>
</html>
<script type="text/javascript">
<!--
/*****************************************************************
* 将全体代码(从<!DOCTYPE到script>)拷贝下来,粘贴到文本编辑器中,
* 另存为.html文件,再用chrome浏览器打开,就能看到实现效果。
******************************************************************/// canvas的绘图环境
var ctx;// 边长
const LENGTH=512;//-------------------------------
// 初始化
//-------------------------------
function init(){// 获得canvas对象var canvas=document.getElementById('myCanvas');  // 初始化canvas的绘图环境ctx=canvas.getContext('2d');  
}// 启动定时任务
setInterval(paintClock,1000);//-------------------------------
// 画时钟
//-------------------------------
function paintClock(){// 清屏ctx.clearRect(0,0,LENGTH,LENGTH);// 画表盘    ctx.fillStyle="black";ctx.lineWidth=6;ctx.beginPath();ctx.arc(LENGTH/2,LENGTH/2,200,0,2*Math.PI,true);ctx.closePath();ctx.stroke();// 罗马数字var hours=["Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ","Ⅹ","Ⅺ","Ⅻ","Ⅰ","Ⅱ"]; for(var i=0;i<12;i++){var theta=i*Math.PI/6;var x1=200*Math.cos(theta);var y1=200*Math.sin(theta);var x2=180*Math.cos(theta);var y2=180*Math.sin(theta);// 画小时刻度ctx.beginPath();ctx.moveTo(LENGTH/2+x1,LENGTH/2+y1);ctx.lineTo(LENGTH/2+x2,LENGTH/2+y2);ctx.closePath();ctx.stroke();// 写罗马数字var x3=160*Math.cos(theta);var y3=160*Math.sin(theta);ctx.font="30px bold";ctx.textAlign="center";ctx.textBaseLine="Middle";ctx.fillText(hours[i],LENGTH/2+x3,LENGTH/2+y3+12);// 12是经验值}// 画分针刻度for(var i=0;i<60;i++){var theta=i*Math.PI/30;var x1=200*Math.cos(theta);var y1=200*Math.sin(theta);var x2=190*Math.cos(theta);var y2=190*Math.sin(theta);ctx.lineWidth=2;ctx.beginPath();ctx.moveTo(LENGTH/2+x1,LENGTH/2+y1);ctx.lineTo(LENGTH/2+x2,LENGTH/2+y2);ctx.closePath();ctx.stroke();}// 得到当前时间var now=new Date();var s=now.getSeconds();var m=now.getMinutes();var h=now.getHours()+m/60;// 画时针ctx.save();ctx.translate(LENGTH/2,LENGTH/2);ctx.rotate(h*Math.PI/6);ctx.lineWidth=5;ctx.lineCap="round";ctx.beginPath();ctx.moveTo(0,0);ctx.lineTo(0,-120);ctx.closePath();ctx.stroke();ctx.restore();// 画分针ctx.save();ctx.translate(LENGTH/2,LENGTH/2);ctx.rotate(m*Math.PI/30);ctx.lineWidth=4;ctx.lineCap="round";ctx.beginPath();ctx.moveTo(0,0);ctx.lineTo(0,-140);ctx.closePath();ctx.strokeStyle="#272727";ctx.stroke();ctx.restore();// 画秒针ctx.save();ctx.translate(LENGTH/2,LENGTH/2);ctx.rotate(s*Math.PI/30);ctx.lineWidth=3;ctx.lineCap="round";ctx.beginPath();ctx.moveTo(0,10);ctx.lineTo(0,-150);ctx.closePath();ctx.strokeStyle="#6F00D2";ctx.stroke();ctx.restore();// 画小圆点ctx.save();ctx.translate(LENGTH/2,LENGTH/2);ctx.beginPath();ctx.arc(0,0,5,0,2*Math.PI,true);ctx.closePath();ctx.strokeStyle="#6F00D2";ctx.fillStyle="#F9F900";ctx.fill();    ctx.stroke();ctx.restore();
}
//-->
</script>

【参考资料】

https://www.ixigua.com/6715044365577748995?logTag=167c68316eb88ca96ee6

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/540347.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CVE-2023-49442 利用分析

1. 漏洞介绍 ​ JEECG(J2EE Code Generation) 是开源的代码生成平台&#xff0c;目前官方已停止维护。JEECG 4.0及之前版本中&#xff0c;由于/api接口鉴权时未过滤路径遍历&#xff0c;攻击者可构造包含 ../ 的url绕过鉴权。攻击者可构造恶意请求利用 jeecgFormDemoControlle…

用连续自然数之和来表达整数 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 一个整数可以由连续的自然数之和来表示。给定一个整数&#xff0c;计算该整数有几种连续自然数之和的表达式&#xff0c;且打印出每种表达式。 输入描述 一个目…

翻转时钟效果

时分秒三个部分结构功能完全一致&#xff0c;均有四块构成&#xff0c;上下各两块。 正面可见&#xff0c;背面不可见&#xff0c;同时需要调整翻转过程中的z-index。 初始状态card2为已经翻转状态。 calendar.html <!DOCTYPE html> <html lang"en">&…

【算法】一类支持向量机OC-SVM(1)

【算法】一类支持向量机OC-SVM 前言一类支持向量机OC-SVM 概念介绍示例编写数据集创建实现一类支持向量机OC-SVM完整的示例输出 前言 由于之前毕设期间主要的工具就是支持向量机&#xff0c;从基础的回归和分类到后来的优化&#xff0c;在接触到支持向量机还有一类支持向量机的…

幸福金龄会携手广东文艺团队共谱文化新篇章《锦绣中华》第二届中老年文旅展演盛大开幕

近日&#xff0c;幸福金龄会携手广东省各支文艺团队及艺术家&#xff0c;开启了《锦绣中华》第二届中老年文旅游活动。此次活动得到了各大媒体对于老年旅游服务的深度关注&#xff0c;并获得了各地文旅企业的热情配合&#xff0c;共同为中老年朋友们打造了一场文化盛宴。 近期&…

01、JS实现:去除数组中重复项的算法之一

数组去除重复项的算法&#xff1a; Ⅰ、删除排序数组中的重复项(注意&#xff1a;是已经排好序的)&#xff1a;1、题目描述&#xff1a;2、解题思路&#xff1a;3、实现代码&#xff1a; Ⅳ、小结&#xff1a; Ⅰ、删除排序数组中的重复项(注意&#xff1a;是已经排好序的)&…

OJ_八皇后

题干 C实现 深度优先遍历&#xff0c;注意回溯打表法&#xff1a;先求出所有解&#xff0c;再存入一个容器中 #define _CRT_SECURE_NO_WARNINGS#include <iostream> #include <vector>using namespace std;vector<vector<int>> queenVec;//用来存在所…

基于SpringBoot+Vue的电商应用系统的设计与实现

1 绪论 1.1研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。这样的大环境让那些止步不前&…

梵宁教育是诈骗机构吗?是否存在坑人行为

近日&#xff0c;注意到网络上出现了一些关于梵宁教育涉嫌诈骗及虚假宣传的言论&#xff0c;这些言论严重损害了梵宁教育的声誉和形象。在此&#xff0c;我们郑重声明&#xff1a;梵宁教育始终坚守诚信原则&#xff0c;从未进行过任何诈骗或虚假宣传行为。 梵宁教育自成立以来&…

损失函数和反向传播

1. 损失函数的基础 import torch from torch.nn import L1Loss from torch import nninputs torch.tensor([1, 2, 3], dtypetorch.float32) targets torch.tensor([1, 2, 5], dtypetorch.float32)inputs torch.reshape(inputs, (1, 1, 1, 3)) targets torch.reshape(targe…

基于SSM+Vue的龙腾公司员工信息管理系统设计与实现

​ 1 绪论 1.1研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。这样的大环境让那些止步不前&a…

分享几套ArcGIS和CAD的三调符号库和使用

在粉丝群中呢&#xff0c;一直有朋友需要三调的符号库。今天就分享几套供大家学习使用&#xff01; 这次符号库有ArcGIS和CAD的&#xff0c;使用方法可参考我们的课程学习。 分享的三调符号库&#xff0c;也是粉丝群中收集的&#xff0c;分享给大家。符号库的质量还请大家自我斟…