为了账号安全,请及时绑定邮箱和手机立即绑定

在线等

我这圆不会出来呀,我'照着打的代码呀58bfc5540001d9fa07801040.jpg
58bfc5850001a9f310400780.jpg

正在回答

4 回答

PI.不是pi

0 回复 有任何疑惑可以回复我~


58c160210001bdbf04070098.jpg
18×rem是什么意思啊

0 回复 有任何疑惑可以回复我~

<!DOCTYPE html>

<html>

<head>

<meta name="viewport" content="width=device-width,initial-scale=1">

<meta charset="utf-8" />

<title>canvas clock</title>

<style type="text/css">

div{

text-align: center;

margin-top: 250px;

}

#clock{

border:1px solid #ccc;

}

</style>

</head>

<body>

<div>

<canvas id="clock" height="400px" width="400px"></canvas>

</div>

<script type="text/javascript">

var dom = document.getElementById('clock');

var ctx = dom.getContext('2d');

var width = ctx.canvas.width;

var height = ctx.canvas.height;

var r = width / 2;

var rem = 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);

ctx.stroke();


//数字

var hourNumbers = [3,4,5,6,7,8,9,10,11,12,1,2];

ctx.font = 18 * rem + 'px Arial';

ctx.textAlign = 'center';

ctx.textBaseline = 'middle';

hourNumbers.forEach(function(number,i){

var rad = 2 * Math.PI / 12 * i;

var x = Math.cos(rad) * (r - 30 * rem);

var y = Math.sin(rad) * (r - 30 * rem);

ctx.fillText(number,x,y);

});


//60个小点点

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

{

var rad = 2 * Math.PI / 60 * i ;

var x = Math.cos(rad) * (r - 18 * rem);

var y = Math.sin(rad) * (r - 18 * rem);

ctx.beginPath();

if(i%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 marad = 2 * Math.PI / 12 / 60 * minute;

ctx.rotate(rad + marad);

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();

ctx.fillStyle='#c14543';

var rad = 2 * Math.PI / 60 * second;

ctx.rotate(rad);

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,false);

ctx.fill();

}




//动态

function draw()

{

ctx.clearRect(0,0,width,height);

var now = new Date();

var hour = now.getHours();

var minute = now.getMinutes();

var second = now.getSeconds();

drawBackground();

drawHour(hour,minute);

drawMinute(minute);

drawSecond(second);

drawDot();

ctx.restore();

}


draw();

setInterval(draw,1000);

</script>

</body>

</html>


0 回复 有任何疑惑可以回复我~
#1

cutecat1234567890_ 提问者

谢谢谢谢,我再试下殴
2017-03-08 回复 有任何疑惑可以回复我~
#2

cutecat1234567890_ 提问者

出不来效果呀π_π,代码没错
2017-03-08 回复 有任何疑惑可以回复我~

function drawBackground(){

//时钟的圆

ctx.translate(r,r);

ctx.beginPath();

ctx.lineWidth = 10;

ctx.arc(0,0,r -5,0,2*Math.PI,false);

ctx.stroke();

}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信