canvas---绘制渐变矩形和字体

渐变效果如下:

能量补充站:

ctx.strokeText(text,x,y,maxWidth);

 

在画布上绘制文本。文本的默认颜色是黑色。text:文本,(x,y)文本开始位置,maxWidth:允许的最大文本宽度。

使用 font 属性来定义字体和字号,并使用 strokeStyle 属性以另一种颜色/渐变来渲染文本。

ctx.fillText(text,x,y,maxWidth);

在画布上绘制“被填充的”文本

使用 font 属性来定义字体和字号,使用 fillStyle 属性以另一种颜色/渐变来渲染文本。

ctx.createLinearGradient(x0,y0,x1,y1);

 

创建线性的渐变对象,渐变可用于填充矩形、圆形、线条、文本等等。(x0,y0)渐变开始点坐标,(x1,y1)渐变结束点坐标

gradient.addColorStop(stop,color);

 

stop:介于 0.0 与 1.0 之间的值,表示渐变中开始与结束之间的位置。

color:在结束位置显示的 CSS 颜色值

ctx.createRadialGradient(x0,y0,r0,x1,y1,r1);

 

创建放射状/环形的渐变(用在画布内容上)

(x0,y0)渐变开始圆的圆心坐标,r0开始圆半径,(x1,y1)渐变结束圆的圆心坐标,r1结束圆半径

ctx.fillRect(x,y,width,height);

绘制“被填充”的矩形,默认黑色(x,y)左上角坐标

ctx.fillStyle=”red”

设置填充颜色为红色

ctx.font="30px Verdana";

定义字体和字号

完整代码如下:

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>绘制渐变</title>

    <script>
        window.onload = function () {
            var cv = document.getElementById("cv");
            var ctx = cv.getContext('2d');

            // 绘制文本
            ctx.font = "18px Georgia";
            ctx.strokeText("绘制线性渐变的矩形!", 0, 18);
            ctx.fillText("绘制线性渐变的矩形!", 200, 18);

            // 绘制线性渐变的矩形
            var obj = ctx.createLinearGradient(30, 30, 80, 80);
            obj.addColorStop(0, 'red');
            obj.addColorStop(1, 'blue');
            ctx.fillStyle = obj;
            ctx.fillRect(30, 30, 50, 50);

            // 创建渐变的字体
            ctx.font = "25px Verdana";
            var gradient = ctx.createLinearGradient(100, 200, cv.width, 0);
            gradient.addColorStop("0", "magenta");
            gradient.addColorStop("0.5", "blue");
            gradient.addColorStop("1.0", "red");
            // 1.被填充的渐变字体
            ctx.fillStyle = gradient;
            ctx.fillText(" 绘制放射状/环形的渐变的矩形", 0, 120);
            // 2.未填充的渐变字体
            // ctx.strokeStyle = gradient;
            // ctx.strokeText(" 绘制放射状/环形的渐变的矩形", 0, 120);

            // 绘制放射状/环形的渐变的矩形
            var obj = ctx.createRadialGradient(120, 250, 50, 120, 250, 80)
            obj.addColorStop(0, 'red');
            obj.addColorStop(0.5, 'yellow');
            obj.addColorStop(0.8, 'pink');
            obj.addColorStop(1, 'blue');
            ctx.fillStyle = obj;
            ctx.fillRect(20, 150, 200, 200);

        }
    </script>
</head>

<body>
    <canvas id="cv" width="400px" height="400px" style="border:1px solid #333;">
        不支持canvas的浏览器
    </canvas>
</body>

</html>

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来回答你的问题。 首先,我们需要在 HTML 中添加一个 canvas 标签: ```html <canvas id="myCanvas" width="400" height="400"></canvas> ``` 接下来,我们可以使用 JavaScript 来绘制折线、矩形、颜色渐变矩形及圆形,具体代码如下: ```javascript // 获取 canvas 元素 const canvas = document.getElementById("myCanvas"); const context = canvas.getContext("2d"); // 绘制折线 context.beginPath(); context.moveTo(50, 50); context.lineTo(100, 100); context.lineTo(150, 50); context.strokeStyle = "red"; context.stroke(); // 绘制矩形 context.fillStyle = "blue"; context.fillRect(200, 50, 50, 50); // 绘制颜色渐变矩形 const gradient = context.createLinearGradient(0, 0, canvas.width, 0); gradient.addColorStop(0, "red"); gradient.addColorStop(0.5, "green"); gradient.addColorStop(1, "blue"); context.fillStyle = gradient; context.fillRect(50, 150, 200, 50); // 绘制圆形 context.beginPath(); context.arc(300, 200, 50, 0, 2 * Math.PI); context.fillStyle = "yellow"; context.fill(); ``` 以上代码中,我们使用了 `beginPath()` 方法来开始绘制路径,使用 `moveTo()` 和 `lineTo()` 方法来绘制折线,使用 `strokeStyle` 属性设置线条颜色,使用 `stroke()` 方法来绘制线条。 我们还使用了 `fillStyle` 属性来设置填充颜色,使用 `fillRect()` 方法来绘制矩形,使用 `createLinearGradient()` 方法来创建颜色渐变,使用 `addColorStop()` 方法来设置渐变颜色点,并最终使用 `fill()` 方法来填充颜色渐变矩形。 最后,我们使用 `arc()` 方法来绘制圆形,使用 `fill()` 方法来填充圆形。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值