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

canvas时钟内容

http://img1.sycdn.imooc.com//5a0ced240001010f02890281.jpg时钟内容刻度是一条直线?



正在回答

2 回答

1.
http://img1.sycdn.imooc.com//5ec5f3ce0001526c07070383.jpg
2.
http://img1.sycdn.imooc.com//5ec5f40b000150c107710298.jpg
3.
http://img1.sycdn.imooc.com//5ec5f4270001447605800327.jpg
4.
http://img1.sycdn.imooc.com//5ec5f43d0001c3d904490403.jpg

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

// clock.js代码
(function () {  
var mycanvas = document.getElementById('canvas1');
var ctx = mycanvas.getContext("2d");
var width = ctx.canvas.width;
var height = ctx.canvas.height;
var r = width / 2;

var rem = width/240;


function drawBackground(){
ctx.save();
ctx.translate(r,r);
ctx.beginPath();
ctx.strokeStyle = "#111";
ctx.lineWidth = 6 * rem;
ctx.arc(0, 0, r - ctx.lineWidth /2, 0, Math.PI*2,false);
ctx.stroke();

var hourNumbers = [3,4,5,6,7,8,9,10,11,12,1,2];
ctx.font= 18 * rem + "px Arial";
ctx.textBaseline = "middle";
ctx.textAlign="center";
$.each(hourNumbers, function(i,n){
var rad = Math.PI*2 / 12 * i;// 弧度
var x = Math.cos(rad)* (r-30 * rem);
var y = Math.sin(rad)* (r-30 * rem);
ctx.fillText(n, 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="#111";
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 = Math.PI * 2 / 12* hour; // 时针的弧度
var mrad = Math.PI * 2 / 12 / 60 * minute; // 分针的弧度
ctx.rotate(rad + mrad);
ctx.lineWidth = 8 * 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 = Math.PI * 2 / 60 * minute; 
ctx.rotate(rad);
ctx.lineWidth = 3 * rem;
ctx.lineCap = "round";//线的结束端点样式
ctx.moveTo(0,10 * rem);
ctx.lineTo(0, -r/2);
ctx.stroke();
ctx.restore();
}

function drawSecond(second) {
ctx.save();
ctx.beginPath();
ctx.fillStyle = "#c14543";
ctx.lineCap = "round";
var rad = Math.PI * 2 / 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 drawWhiteDot() {
ctx.beginPath();
ctx.fillStyle="#fff";
ctx.arc(0, 0, 4 * rem, 0, Math.PI * 2, false);
ctx.fill();
}

function draw() {
ctx.clearRect(0,0,width,height);
var now = new Date();
var hour = now.getHours();
var minute = now.getMinutes();
// 秒针转动方式1:每秒一次步进  -- begin --
// var second = now.getSeconds();
// 秒针转动方式1:不停转  -- end--
// 秒针转动方式2:不停转  -- begin --
var second = now.getSeconds();
var msecond = now.getMilliseconds();
second = second + msecond/ 1000;
// 秒针转动方式2:不停转  -- end--
drawBackground();
drawHour(hour, minute);
drawMinute(minute);
drawSecond(second);
drawWhiteDot();
ctx.restore();
}
draw();
setInterval(draw, 40);

})();

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

举报

0/150
提交
取消
Canvas 绘制时钟
  • 参与学习       49750    人
  • 解答问题       160    个

canvas画出漂亮的时钟,通过本教程能重新掌握一些几何知识

进入课程

canvas时钟内容

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