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

为什么我出来的是椭圆,有谁能不能上传一下代码

我控制台输出var r = width/2;console.log(width+" "+r);width是300,r是150有问题吗

正在回答

3 回答

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

});


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 drowHour(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 drowMinute(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 drowSecond(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();

drowHour(hour,minute);

drowMinute(minute);

drowSecond(second);

drawDot();

ctx.restore();

}


draw();

setInterval(draw,1000);

</script>

我出来的时钟是正常的,请参考

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

慕粉3197089 提问者

非常感谢!
2016-10-14 回复 有任何疑惑可以回复我~
#2

慕粉3197089 提问者

我只能说一句你的在我这也一样,是浏览器的问题?
2016-10-14 回复 有任何疑惑可以回复我~
#3

无题毛毛 回复 慕粉3197089 提问者

你的是什么问题?
2016-10-19 回复 有任何疑惑可以回复我~

canvas标签里面加上width=“200”height=“200”

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

我只能说一句你的在我这也一样,是浏览器的问题?

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

举报

0/150
提交
取消

为什么我出来的是椭圆,有谁能不能上传一下代码

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信