首页 web前端 H5教程 html5 canvas实现圆形时钟实例代码

html5 canvas实现圆形时钟实例代码

May 27, 2017 pm 03:17 PM
canvas

代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>HTML CLOCK</title>

</head>

<body>

<canvas width="500" height="500" id="clock">

你的浏览器不支持canvas标签,时针显示不出来哦!

</canvas>

<script type="text/javascript">

//画布背景颜色

var clockBackGroundColor = "#ABCDEF";

//时针颜色

var hourPointColor = "#000";

//时针粗细

var hourPointWidth = 7;

//时针长度

var hourPointLength = 100;

//分针颜色

var minPointColor = "#000";

//分针粗细

var minPointWidth = 5;

//分针长度

var minPointLength = 150;

//秒针颜色

var secPointColor = "#F00";

//秒针粗细

var secPointWidth = 3;

//秒针长度

var secPointLength = 170;

//表盘颜色

var clockPanelColor = "#ABCDEF";

//表盘刻度颜色

var scaleColor = "#000";

//表盘大刻度宽度 3 6 9 12

var scaleBigWidth = 9;

//表盘大刻度的长度

var scaleBigLength = 15;

//表盘小刻度的宽度

var scaleSmallWidth = 5;

//表盘小刻度的长度

var scaleSmallLength = 10;

//圆心颜色

var centerColor = &#39;red&#39;;

 

 

//时钟画布

var clock = document.getElementById(&#39;clock&#39;);

clock.style.background = clockBackGroundColor;

//时针画布的作图环境(画板)

var panel = clock.getContext(&#39;2d&#39;);

 

 

//画线

/**

*画线段

*

*

*/

function drowLine(p,width,color,startX,startY,endX,endY,ran,cX,cY){

//保存传入的画板,相当于每次作画新开一个图层

p.save();

//设置画笔宽度

p.lineWidth = width;

//设置画笔颜色

p.strokeStyle = color;

//新开启作图路径,避免和之前画板上的内容产生干扰

p.beginPath();

p.translate(cX,cY);

//旋转

p.rotate(ran);

//移动画笔到开始位置

p.moveTo(startX,startY);

//移动画笔到结束位置

p.lineTo(endX,endY);

//画线操作

p.stroke();

//关闭作图路径,避免和之后在画板上绘制的内容产生干扰

p.closePath();

//在传入的画板对象上覆盖图层

p.restore();

}

/**

*画水平线

*/

function drowHorizontalLine(p,width,length,color,startX,startY,ran,cX,cY){

drowLine(p,width,color,startX,startY,startX+length,startY,ran,cX,cY);

}

/**

*画圈圈

*/

function drowCircle(p,width,color,centreX,centreY,r){

p.save();

//设置画笔宽度

p.lineWidth = width;

//设置画笔颜色

p.strokeStyle = color;

//新开启作图路径,避免和之前画板上的内容产生干扰

p.beginPath();

//画圈圈

p.arc(centreX,centreY,r,0,360,false);

//画线操作

p.stroke();

//关闭作图路径,避免和之后在画板上绘制的内容产生干扰

p.closePath();

//在传入的画板对象上覆盖图层

p.restore();

}

function drowPoint(p,width,color,centreX,centreY,r){

p.save();

//设置画笔宽度

p.lineWidth = width;

//设置画笔颜色

p.fillStyle = color;

//新开启作图路径,避免和之前画板上的内容产生干扰

p.beginPath();

//画圈圈

p.arc(centreX,centreY,r,0,360,false);

//画线操作

p.fill();

//关闭作图路径,避免和之后在画板上绘制的内容产生干扰

p.closePath();

//在传入的画板对象上覆盖图层

p.restore();

}

function drowScales(p){

//画小刻度

for(var i = 0;i < 60;i++){

drowHorizontalLine(p,scaleSmallWidth,scaleSmallLength,scaleColor,195-scaleSmallLength,0,i*6*Math.PI/180,250,250);

}

//画大刻度

for(var i = 0;i < 12;i++){

drowHorizontalLine(p,i%3==0?scaleBigWidth*1.2:scaleBigWidth,i%3==0?scaleBigLength*1.2:scaleBigLength,scaleColor,195-scaleBigLength,0,i*30*Math.PI/180,250,250);

//可以添加数字刻度

}

}

function drowHourPoint(p,hour){

drowHorizontalLine(p,hourPointWidth,hourPointLength,hourPointColor,-10,0,(hour-3)*30*Math.PI/180,250,250);

}

function drowMinPoint(p,min){

drowHorizontalLine(p,minPointWidth,minPointLength,minPointColor,-15,0,(min-15)*6*Math.PI/180,250,250);

}

function drowSecPoint(p,sec){

drowHorizontalLine(p,secPointWidth,secPointLength,secPointColor,-15,0,(sec-15)*6*Math.PI/180,250,250);

}

function drowClock(){

panel.clearRect(0,0,500,500);

 

panel.fillText("",10,20);

panel.fillText("<a href="http://www.jb51.net",10,40">http://www.jb51.net",10,40</a>);

var date = new Date();

var sec = date.getSeconds();

var min = date.getMinutes();

var hour = date.getHours() + min/60;

drowCircle(panel,7,&#39;blue&#39;,250,250,200);

drowScales(panel);

 

drowHourPoint(panel,hour);

drowMinPoint(panel,min);

drowSecPoint(panel,sec);

 

drowPoint(panel,1,centerColor,250,250,7);

//drowHorizontalLine(panel,10,10,&#39;red&#39;,-5,0,0,250,250);

}

//drowHorizontalLine(panel,7,30,&#39;#F00&#39;,0,0,Math.PI,250,250);

drowClock();

setInterval(drowClock,1000);

function save(){

var image = clock.toDataURL("image/png").replace("image/png", "image/octet-stream");

location.href=image;

}

</script>

</body>

</html>

登录后复制

【相关推荐】

1. HTML5开发手机应用-详细介绍viewport的作用(图文)

2. 浅谈html5 响应式布局

3. HTML5 程序设计

4. 小程序开发之利用co处理异步流程的实例教程

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

canvas哪些学校用 canvas哪些学校用 Aug 18, 2023 pm 05:59 PM

在用canvas的学校有斯坦福大学、麻省理工学院、哥伦比亚大学、加州大学伯克利分校等。详细介绍:1、斯坦福大学,使用Canvas作为其主要的在线学习平台,斯坦福大学的教师和学生使用Canvas来管理和交流课程内容,并通过在线讨论、作业提交和考试等功能进行学习;2、麻省理工学院,MIT也采用了Canvas作为其在线学习管理系统,通过Canvas平台进行课程管理;3、哥伦比亚大学等

canvas箭头插件有哪些 canvas箭头插件有哪些 Aug 21, 2023 pm 02:14 PM

canvas箭头插件有:1、Fabric.js,具有简单易用的API,可以创建自定义箭头效果;2、Konva.js,提供了绘制箭头的功能,可以创建各种箭头样式;3、Pixi.js,提供了丰富的图形处理功能,可以实现各种箭头效果;4、Two.js,可以轻松地创建和控制箭头的样式和动画;5、Arrow.js,可以创建各种箭头效果;6、Rough.js,可以创建手绘效果的箭头等。

学习canvas框架 详解常用的canvas框架 学习canvas框架 详解常用的canvas框架 Jan 17, 2024 am 11:03 AM

探索Canvas框架:了解常用的Canvas框架有哪些,需要具体代码示例引言:Canvas是HTML5中提供的一个绘图API,通过它我们可以实现丰富的图形和动画效果。为了提高绘图的效率和便捷性,许多开发者开发了不同的Canvas框架。本文将介绍一些常用的Canvas框架,并提供具体代码示例,以帮助读者更深入地了解这些框架的使用方法。一、EaselJS框架Ea

canvas时钟有哪些细节 canvas时钟有哪些细节 Aug 21, 2023 pm 05:07 PM

canvas时钟的细节有时钟外观、刻度线、数字时钟、时针、分针和秒针、中心点、动画效果、其他样式等。详细介绍:1、时钟外观,可以使用Canvas绘制一个圆形表盘作为时钟的外观,可以设置表盘的大小、颜色、边框等样式;2、刻度线,在表盘上绘制刻度线,表示小时或分钟的位置;3、数字时钟,可以在表盘上绘制数字时钟,表示当前的小时和分钟;4、时针、分针和秒针等等。

html2canvas有哪些版本 html2canvas有哪些版本 Aug 22, 2023 pm 05:58 PM

html2canvas的版本有html2canvas v0.x、html2canvas v1.x等。详细介绍:1、html2canvas v0.x,这是html2canvas的早期版本,目前最新的稳定版本是v0.5.0-alpha1。它是一个成熟的版本,已经被广泛使用,并且在许多项目中得到了验证;2、html2canvas v1.x,这是html2canvas的新版本。

uniapp实现如何使用canvas绘制图表和动画效果 uniapp实现如何使用canvas绘制图表和动画效果 Oct 18, 2023 am 10:42 AM

uniapp实现如何使用canvas绘制图表和动画效果,需要具体代码示例一、引言随着移动设备的普及,越来越多的应用程序需要在移动端展示各种图表和动画效果。而uniapp作为一款基于Vue.js的跨平台开发框架,提供了使用canvas绘制图表和动画效果的能力。本文将介绍uniapp如何使用canvas来实现图表和动画效果,并给出具体的代码示例。二、canvas

tkinter canvas有哪些属性 tkinter canvas有哪些属性 Aug 21, 2023 pm 05:46 PM

tkinter canvas属性有bg、bd、relief、width、height、cursor、highlightbackground、highlightcolor、highlightthickness、insertbackground、insertwidth、selectbackground、selectforeground、xscrollcommand属性等等。详细介绍

canvas鼠标坐标在哪里 canvas鼠标坐标在哪里 Aug 22, 2023 pm 03:08 PM

canvas获取鼠标坐标的方法:1、创建一个JavaScript示例文件;2、获取Canvas元素的引用,添加一个鼠标移动事件的监听器;3、当鼠标在Canvas上移动时,会触发getMousePos函数;4、使用“getBoundingClientRect()”方法获取Canvas元素的位置和大小信息,通过event.clientX和event.clientY获取鼠标坐标即可。

See all articles