【笔记】【imooc】canvas(绚丽的时钟效果)

*课程最终成果展示:
CodePen: https://codepen.io/YitingLi/full/jwjgdP/
GitHub: https://github.com/Liyiting/canvas-Gorgeous-clock-effects*

七巧板demo

HTML

html5的一个新的标签。

<canvas id="canvas"></canvas>

不指定长宽时,默认是300px*150px

<canvas id="canvas" width="1024" height="768"></canvas>

这里的宽高没有单位,因为他们也决定了canvas画布内里的精度

Javascript

var canvas = document.getElementById('canvas')
var context = canvas.getContext('2d')
//使用context进行绘制

Canvas

  • canvas.width
  • canvas.height
  • canvas.getContext(‘2d’)
Draw a line 绘制直线

Canvas是基于状态的绘制

context.moveTo(100, 100)//下笔处

context.lineTo(700, 700)//画到哪儿

context.lineWidth = 5 //线条宽度

//空心
context.strokeStyle = "#005588" //线条颜色

context.stroke() //画!

//实心
context.fillStyle = "rgb(2,100,30)"//填充颜色

context.fill()

//路径分开绘制
//closePath的意思不是结束路径,而是闭合当前路径使得所有线段连接。它会试图从当前路径的终点连一条路径到起点,让整个路径闭合起来。(这样才能填色吗不是)但是,这并不意味着它之后的路径就是新路径了,要开启新路径,仍然需要使用beginPath,简单说,closePath和beginPath其实没有任何联系的。
context.beginPath()

context.closePath()

七巧板demo:

<!DOCTYPE html>
<html>
<head>
    <meta charset = "UTF-8">
    <title></title>
</head>
<body>
    <canvas id="canvas" style="border: 1px solid #aaa;display: block; margin: 0 auto;">
        当前浏览器不支持Canvas, 请更换浏览器后再试。
    </canvas>
    <script>
    var tangram = [
        {p:[{x:0, y:0},{x:800, y:0},{x:400, y:400}], color: "#caff67"},
        {p:[{x:0, y:0},{x:400, y:400},{x:0, y:800}], color: "#67becf"},
        {p:[{x:800, y:0},{x:800, y:400},{x:600, y:600},{x:600, y:200}], color: "#ef3d61"},
        {p:[{x:600, y:200},{x:600, y:600},{x:400, y:400}], color: "#f9f51a"},
        {p:[{x:400, y:400},{x:600, y:600},{x:400, y:800},{x:200, y:600}], color: "#a594c0"},
        {p:[{x:200, y:600},{x:400, y:800},{x:0, y:800}], color: "#fa8ecc"},
        {p:[{x:800, y:400},{x:800, y:800},{x:400, y:800}], color: "#f6ca29"}
    ]

        window.onload = function() {
            var canvas = document.getElementById("canvas");

            canvas.width = 800;
            canvas.height = 800;

            var context = canvas.getContext("2d")
            for(var i = 0; i < tangram.length; i++){
                draw(tangram[i], context);
            }
        }

        function draw(piece, cxt){
            cxt.beginPath();
            cxt.moveTo(piece.p[0].x, piece.p[0].y);
            for(var i = 1; i<piece.p.length; i++) {
                cxt.lineTo(piece.p[i].x, piece.p[i].y);
            }
            cxt.closePath();

            cxt.fillStyle = piece.color;
            cxt.fill();

            cxt.strokeStyle = "black";
            cxt.lineWidth = 3;
            cxt.stroke();
        }
    </script>
</body>
</html>
Draw an arc 绘制弧线
context.arc(
    centerx, centery, radius, //圆心坐标及半径
    startingAngle, endingAngle, //起始弧度制
    anticlockwise = false //顺/逆时针
    //对于一个圆来说0pi在右边,顺逆时针角度不变
)

closePath对于fill来说是没有用的,因为调用fill时canvas会自动把没有closePath的路径首尾相连

clearRct(x,y,width, height)//对矩形区域进行一次刷新操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值