花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 40|回复: 4

深入理解canvas画布渐变之:径向渐变

[复制链接]
  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2022-8-30 07:28 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    本帖最后由 马黑黑 于 2022-8-30 07:31 编辑

    深入理解canvas画布渐变之:径向渐变 | 马黑黑

    要在canvas画布中使用径向渐变,和线性渐变一样,先需创建一个渐变方案,用的画笔指令是 createRadialGradient(),它需要6个参数:

            ctx.createRadialGradient(x1, y1, r1, x2, y2, r2);

    这六个参数分两组,第一组 x1、y1、r1 分别是第一个径向即圆的圆心{x,y}坐标和半径(r),同理,第二组参数则是第二个径向圆的圆心{xy}坐标和半径(r)。弄清楚各参数的含义,我们就可以具体定义一个径向渐变(也称圆形渐变)方案。我们还是在 400*400 的画布上操作:

            let gradient = ctx.createRadialGradient(200, 200, 10, 200, 200, 200);

    第一个渐变圆环xy坐标是{200,200},半径是10,第二个渐变圆环xy坐标也是 {200.200},半径200。两个渐变圆环共用一个圆心坐标,大小由其半径决定,这里半径200的在外层,半径为10的在里层。

    接着我们给渐变方案添加颜色,方法和线性渐变的一样:

    gradient.addColorStop(0, 'red');
    gradient.addColorStop(1, 'green');

    然后把渐变方案当做画笔的 fillStyle:

    ctx.fillStyle = gradient;

    最后全幅绘制矩形:

    ctx.fillRect(0, 0, 400, 400);

    使用 createRadialGradient() 方法定义径向渐变,前后两组渐变圆的圆心可以不再同一个圆心上,结合半径和颜色设定,可以营造出不同于CSS径向渐变的效果。下面给出一个较为简单的不同圆心的径向渐变实例:

    <div id="papa">
            <canvas id="canv" width="400" height="400"></canvas>
    </div>

    <script>


    let ctx = canv.getContext('2d');
    let gradient = ctx.createRadialGradient(200, 200, 10, 100, 100, 200);
    gradient.addColorStop(0, 'red');
    gradient.addColorStop(1, 'green');
    ctx.fillStyle = gradient;
    ctx.fillRect(0, 0, canv.width, canv.height);


    </script>


    评分

    参与人数 2威望 +80 金钱 +160 经验 +80 收起 理由
    加林森 + 30 + 60 + 30 很给力!
    红影 + 50 + 100 + 50 赞一个!

    查看全部评分

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-8-30 07:32 | 显示全部楼层
    canvas 画布渐变就这两种:线性渐变和径向渐变。缺失角向渐变(锥形渐变)。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2022-8-30 09:31 | 显示全部楼层
    这个不同心的好玩,出现了探照灯一样的效果
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2022-8-30 09:32 | 显示全部楼层
    黑黑辛苦了,讲解了这么多画布知识,感谢
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-6-15 10:31
  • 签到天数: 525 天

    [LV.9]以坛为家II

    1383

    主题

    3万

    回帖

    10万

    积分

    版主

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀青草情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀男儿情怀鹰傲苍穹花好月圆飞龙在天王者至尊大将风范天籁妙音共看流星风雨同行幸福快乐喜乐安康指尖上的流年花潮版主

    发表于 2022-8-30 12:08 | 显示全部楼层
    来学习!
     
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2025-12-15 04:25 , Processed in 0.073091 second(s), 28 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表