canvas-八卦图和时钟实现

八卦图:

<body>
canvas id=" myCanvas" width=" 500" height= ”600"></canvas>
<script>
//获取到画布元素
let myCanvas = document.getElementById( "myCanvas );
//通过画布元素获取到上下文(画笔)
let ctx = myCanvas.getContext("2d" );
//右边白色的半圆
ctx.fillstyle =“#fff";
ctx.beginPath();
ctx.arc(300, 300, 100, (Math.PI / 180) * 270, (Math.PI / 180) * 90);
ctx.fill();
//左边黑色的圆
ctx.fillstyle = #000";
ctx.beginPath(); 
ctx.arc(300, 300, 100, (Math.PI / 180) * 270, (Math.PI / 180) * 90, true);
ctx.fill();
//左边白色的小圆
ctx.fillstyle = "#fff";
ctx.beginPath(); 
ctx.arc(300, 25050, (Math.PI / 180) * 270, (Math.PI / 180) .90, true);
ctx.fill();
//右边黑色的小圆
ctx.fillstyle =“#000” ;
ctx.beginPath(); 
ctx.arc(300, 350, 50, (Math.PI / 180) * 270, (Math.PI / 180) * 90); 
ctx.fill();
//黑色的小圆点
ctx.fillstyle =“#000" ;
ctx.beginPath();
ctx.arc(300, 2505, 0, Math.PI * 2);
ctx.fill();
//白色的小圆点
ctx.fillstyle =“#fff";
ctx.beginPath(); 
ctx.arc(300, 350, 5, 0, Math.PI * 2);
ctx.fill();
</script>
</body>

时钟:

<body>
    <canvas id="myCanvas" width="500" height="400">
        很抱歉,你的浏览器不支持canvas元素
    </canvas>
    <script>
        var c = document.getElementById('myCanvas');//获取Canvas对象
        var ctx = c.getContext('2d');//获取上下文
        function drawClock()
        {
            ctx.clearRect(0,0, c.width, c.height);//清除画布
            c.width = c.width;//清除画布时需要重置宽度,否则会有一个画布的重叠
            var x = 250,y = 200,r = 180;//定义圆盘的中心坐标和圆盘的半径
            /*获取实际的时间*/
            var objTime = new Date();
            var objHour = objTime.getHours();
            var objMin = objTime.getMinutes();
            var objSen = objTime.getSeconds();
            /*将时间转换为具体的弧度*/
            /*
             * 因为时钟是从12点的位置算作开始,但是canvas是3点钟的位置算作0度,所以-90度指向12点方向
             * 时针是每小时相隔30度,objMin/2是为了做出当分针过半时,时针也相应的处于两个小时之间
             * 分针和秒针是每次相隔6度
             */
            var arcHour = (-90+objHour*30 + objMin/2)*Math.PI/180;
            var arcMin = (-90+objMin*6)*Math.PI/180;
            var arcSen = (-90+objSen*6)*Math.PI/180;
            /*绘制圆盘*/
            ctx.beginPath();
            for(var i=0;i<60;i++)//一共360度,一共60分钟,每分钟相隔6度,360/6=60
            {
                ctx.moveTo(x,y);
                ctx.arc(x,y,r,6*i*Math.PI/180,6*(i+1)*Math.PI/180,false);
            }
            ctx.closePath();
            ctx.stroke();
            /*绘制白盘盖住下面的线*/
            ctx.fillStyle = 'white';
            ctx.beginPath();
            ctx.arc(x,y,r*19/20,0,360*Math.PI/180,false);//半径取值为r的20分之19
            ctx.closePath();
            ctx.fill();
            /*依葫芦画瓢,制作每一个小时的线*/
            /*绘制圆盘*/
            ctx.beginPath();
            ctx.lineWidth = 3;
            for(var i=0;i<12;i++)//一共360度,一共12个小时,每小时相隔30度,360/30=12
            {
                ctx.moveTo(x,y);
                ctx.arc(x,y,r,30*i*Math.PI/180,30*(i+1)*Math.PI/180,false);
            }
            ctx.closePath();
            ctx.stroke();
            /*绘制白盘盖住下面的线*/
            ctx.fillStyle = 'white';
            ctx.beginPath();
            ctx.arc(x,y,r*18/20,0,360*Math.PI/180,false);//半径取值为r的20分之18
            ctx.closePath();
            ctx.fill();
            /*开始绘制时针分针和秒针,技巧就是起始弧度和结束弧度值一样*/
            /*开始绘制时针*/
            ctx.beginPath();
            ctx.moveTo(x,y);
            ctx.lineWidth = 7;
            ctx.lineCap = 'round';
            ctx.arc(x,y,r*10/20,arcHour,arcHour,false);//半径取值为r的20分之10
            ctx.stroke();
            ctx.closePath();
            /*开始绘制分针*/
            ctx.beginPath();
            ctx.moveTo(x,y);
            ctx.lineWidth = 5;
            ctx.lineCap = 'round';
            ctx.arc(x,y,r*12/20,arcMin,arcMin,false);//半径取值为r的20分之12
            ctx.stroke();
            ctx.closePath();
            /*开始绘制秒针*/
            ctx.beginPath();
            ctx.moveTo(x,y);
            ctx.lineWidth = 2;
            ctx.lineCap = 'round';
            ctx.arc(x,y,r*16/20,arcSen,arcSen,false);//半径取值为r的20分之16
            ctx.stroke();
            ctx.closePath();
        }
        setInterval('drawClock()',1000);//每隔1秒调用绘制时钟函数
    </script>
</body>

 

转载于:https://www.cnblogs.com/CccK-html/p/11519194.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Canvas 是 HTML5 中的一个元素,它提供了一种在网页上绘制图形、动和视频的方法。要回执图像和视频,可以使用 Canvas 的 drawImage 方法。 要回执图像,首先需要创建一个 Image 对象,并将图像的路径指定给它。然后,可以使用 Canvas 的 drawImage 方法将图像绘制到 Canvas 上。这个方法接受几个参数,包括图像对象、图像的起始坐标以及可选的宽度和高度。 下面是一个回执图像的示例: ```javascript var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d"); var img = new Image(); img.onload = function() { ctx.drawImage(img, 0, 0, canvas.width, canvas.height); }; img.src = "path/to/image.jpg"; ``` 要回执视频,可以使用 HTML5 的 video 元素。首先,创建一个 video 元素,并将视频的路径指定给它。然后,可以使用 Canvas 的 drawImage 方法将视频绘制到 Canvas 上。与回执图像类似,这个方法接受几个参数,包括视频元素、视频的起始坐标以及可选的宽度和高度。 下面是一个回执视频的示例: ```javascript var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d"); var video = document.getElementById("myVideo"); video.addEventListener("play", function() { setInterval(function() { ctx.drawImage(video, 0, 0, canvas.width, canvas.height); }, 1000 / 30); }, false); video.src = "path/to/video.mp4"; ``` 这些示例代码演示了如何使用 Canvas 回执图像和视频。你可以根据自己的需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值