<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
div{
text-align: center;
margin-top:250px;
}
#clock{
border:1px solid #ccc;
}
</style>
</head>
<body>
<div>
<canvas id="clock" height="200px" width="200px"> </canvas>
</div>
<script>
var canvas=document.getElementById('clock');
var ctx=canvas.getContext("2d");
var r=(canvas.width)/2; //半徑
// 比例 為了放大縮小的美觀
var rem=canvas.width/200
function drawBackground(){
ctx.save()
// 默寫原點是左上角,可以重新定義,定義到正方形的中心
ctx.translate(r,r);
ctx.beginPath();
ctx.lineWidth=10*rem;
ctx.arc(0,0,r-ctx.lineWidth/2,0,2*Math.PI,false) //默認false為順時針
ctx.stroke();
// 定義小時數(shù)放到數(shù)組里
var hourNumber=[3,4,5,6,7,8,9,10,11,12,1,2];
ctx.font=18*rem+"px Arial";
ctx.textAlign="center";
ctx.textBaseline="middle";
// hourNumber.forEach(function(number,i){
// // 定義弧度的
// var rad=2*Math.PI /12 * i;
// //cos 領邊/斜邊
// var x=Math.cos(rad) * (r-30);
// var y=Math.sin(rad) * (r-30);
// ctx.fillText(number,x,y)
// })
for(var i=0;i<hourNumber.length;i++){
var rad=2*Math.PI /12 * i;
//cos 領邊/斜邊
var x=Math.cos(rad) * (r-30*rem);
var y=Math.sin(rad) * (r-30*rem);
ctx.fillText(hourNumber[i],x,y)
}
for (var j=0;j<60;j++){
var rad=2*Math.PI /60 * j;
var x=Math.cos(rad) * (r-17*rem);
var y=Math.sin(rad) * (r-17*rem);
ctx.beginPath();
if(j%5==0){
ctx.fillStyle="#000"
ctx.arc(x,y,2*rem,0,2*Math.PI,false);
}else{
ctx.fillStyle="#ccc"
ctx.arc(x,y,2*rem,0,2*Math.PI,false);
}
ctx.fill()
}
}
//畫時針
function drawHour(hour,minute){
ctx.save()
ctx.beginPath();
var rad=2*Math.PI /12 * hour;
// 分鐘所引起的弧度
var mrad=2*Math.PI /12/60*minute;
ctx.rotate(rad+mrad);
ctx.lineWidth=6*rem;
//設置線的兩端是圓的
ctx.lineCap="round";
ctx.moveTo(0,10*rem);
ctx.lineTo(0,-r/2);
ctx.stroke();
ctx.restore();
}
//畫分針
function drawMinute(minute){
ctx.save()
ctx.beginPath();
var rad=2*Math.PI /60 * minute;
ctx.rotate(rad);
ctx.lineWidth=3*rem;
//設置線的兩端是圓的
ctx.lineCap="round";
ctx.moveTo(0,10*rem);
ctx.lineTo(0,-r+30*rem);
ctx.stroke();
ctx.restore()
}
//畫秒針
function drawSecond(second){
ctx.save()
ctx.beginPath();
var rad=2*Math.PI /60 * second;
ctx.rotate(rad);
ctx.fillStyle='red';
ctx.moveTo(-2*rem,20*rem);
ctx.lineTo(2*rem,20*rem);
ctx.lineTo(1,-r+18*rem);
ctx.lineTo(-1,-r+18*rem);
ctx.fill()
ctx.restore()
}
//畫連接時分秒的一個小圓點
function drawDot(){
ctx.beginPath();
ctx.fillStyle="#fff";
ctx.arc(0,0,3*rem,0,2*Math.PI);
ctx.fill();
}
function draw(){
ctx.clearRect(0,0,canvas.width,canvas.height)
var date=new Date();
var hour=date.getHours();
var minute=date.getMinutes();
var second=date.getSeconds();
drawBackground()
drawHour(hour,minute)
drawMinute(minute)
drawSecond(second)
drawDot()
ctx.restore()
}
draw()
setInterval(draw,1000);
</script>
</body>
</html>
canvas繪制時鐘
最后編輯于 :
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門乞榨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人当娱,你說我怎么就攤上這事吃既。” “怎么了跨细?”我有些...
- 文/不壞的土叔 我叫張陵鹦倚,是天一觀的道長。 經(jīng)常有香客問我冀惭,道長震叙,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任散休,我火速辦了婚禮媒楼,結果婚禮上,老公的妹妹穿的比我還像新娘溃槐。我一直安慰自己匣砖,他們只是感情好,可當我...
- 文/花漫 我一把揭開白布昏滴。 她就那樣靜靜地躺著猴鲫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谣殊。 梳的紋絲不亂的頭發(fā)上拂共,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼俭驮!你這毒婦竟也來了回溺?” 一聲冷哼從身側響起,我...
- 正文 年R本政府宣布,位于F島的核電站购撼,受9級特大地震影響跪削,放射性物質發(fā)生泄漏。R本人自食惡果不足惜迂求,卻給世界環(huán)境...
- 文/蒙蒙 一碾盐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧揩局,春花似錦毫玖、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至驰怎,卻和暖如春阐滩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背县忌。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- Cnavas繪制時鐘 背景圖的繪制(大圓喧伞、數(shù)字、小圓點)绩郎,掌握基礎知識:圓的繪制(arc方法)潘鲫,關于圓的弧度的計算...
- 在這之前 你需要了解一下方法的使用: beginPath() closePath() moveTo() lineT...