canvas学习笔记-fillStyle和strokeStyle

fillStyle示例

在本示例中,用两层for循环来绘制方格阵列,每个方格不同的颜色。结果如下图:

实现效果

在这里插入图片描述

但实现的代码没有那么复杂,用两个变量ij来为每一个方格产生唯一的RGB色彩值,其中仅修改红色和绿色通道的值,而保持蓝色通道的值不变。也可以通过修改这些颜色通道的值来产生各种各样的色板。通过增加渐变的频率,还可以绘制出类似Photoshop里面的那样的调色板。

代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>FillStyle Demo</title>
</head>

<body>
    <canvas id="canvas"></canvas>
</body>
<script>
    function draw() {
        let ctx = document.getElementById("canvas").getContext("2d");
        for (let i = 0; i < 6; i++) {
            for (let j = 0; j < 6; j++) {
                ctx.fillStyle = "rgb(" + Math.floor(255 - 42.5 * i) + "," + Math.floor(255 - 42.5 * j) + ",0)";

                ctx.fillRect(j * 25, i * 25, 25, 25)
            }
        }
    }
    draw()
</script>

</html>

strokeStyle示例

这个示例和上面有点类似,但这次用到的是strokeStyle属性,画的不是方格,而是用arc方法来画圆。

实现效果

在这里插入图片描述

代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>StrokeStyle Demo</title>
</head>

<body>
    <canvas id="canvas"></canvas>
</body>
<script>
    function draw() {
        let ctx = document.getElementById("canvas").getContext("2d");
        for (let i = 0; i < 6; i++) {
            for (let j = 0; j < 6; j++) {
                ctx.strokeStyle = "rgb(0," + Math.floor(255 - 42.5 * i) + "," + Math.floor(255 - 42.5 * j) + ")";

                ctx.beginPath();
                ctx.arc(12.5 + j * 25, 12.5 + i * 25, 10, 0, Math.PI * 2, true);
                ctx.stroke();
            }
        }
    }
    draw()
</script>

</html>
相关API
beginPath()

新建一条路线,生成之后,图形绘制命令被指向到路径上生成路径。

closePath()

闭合路径之后图形绘制命令又重新指向到上下文中。

stroke()

通过线条来绘制图形轮廓。

fill()

通过填充路径的内容区域生成实心的图行。

arc(x, y, radius, startAngle, endAngle, anticlockwise)

画一个以(x, y)为圆心的以radius为半径的圆弧(圆),从startAngle开始到endAngle结束,按照acticlockwise给定的方向(默认为顺时针)来生成。

`

画一个以(x, y)为圆心的以radius为半径的圆弧(圆),从startAngle开始到endAngle结束,按照acticlockwise给定的方向(默认为顺时针)来生成。

  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joyce Lee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值