花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 339|回复: 278

如何在canvas画布中旋转图像

[复制链接]
  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

    发表于 2024-3-30 12:37 | 显示全部楼层 |阅读模式

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

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

    x

    canvas画布要绘制旋转的图像,它不是旋转图像对象,它没有这个能力,它要做的是临时旋转绘画坐标系,再绘制图像。我们来看看在 400*400 的画布上绘制于画布中心的小矩形如何旋转:

    0

    尽管我们说调节矩形旋转角度——这确实也是我们直观观察到的效果——,在画布上旋转 100*40 的小矩形,实现机制却是要旋转画布坐标系。我们可以通过核心代码来理解这个问题:

    ctx.clearRect(0, 0, 400, 400); //把黑板擦干净 ctx.save(); //保存画笔状态 ctx.rotate(deg * Math.PI / 180); //旋转 deg 度 ctx.fillRect(x,y,w,h); //绘制矩形 :(x,y)为矩形左上角坐标点,(w,h)为矩形宽高尺寸 ctx.restore(); //还原画笔状态

    核心代码是第三行,用 rotate() 方法旋转画笔的绘图坐标系,这个坐标系也可以理解为是画布的坐标系,我们在本文的讨论过程中这两种提法都有。rotate() 需要一个参数,旋转的弧度,因此参数里是一个式子,它将获取到的 deg 角度值换算为弧度值。

    演示实例的效果表明,矩形不是在自己的原始位置上旋转,它所旋转的 0 以外的任意角度,都会伴随着位置移动。这是由于画笔旋转坐标系是有一个固定的原点,在画布的左上角,坐标值是(0,0),上例中矩形的每一次旋转都围绕那个点进行,因旋转而发生的移动轨迹是一个弧形路线。也许大家会觉得奇怪,旋转为什么会产生移动?回顾一下旋转的实现机制:是画布在虚拟地旋转,即,画布旋转它的画笔坐标系,这个旋转带动矩形跟着旋转并移位。画布虚拟旋转并在其上绘制图像,可以视为是一个动态的图层,因此旋转的过程我们看不到实质性的画布旋转,而是矩形的旋转与移位。

    上面的图像旋转方式应该不是我们所需要的,往往,我们对旋转运动的需求是图像在原地旋转,绕图像自己的中心点进行。画布可以做到这一点,思路与流程严格按照下面的描述进行:

    ① 用 translate(cx,cy) 方法临时迁移画布坐标系到图像的中心点;
    ② 旋转画布坐标系 deg 个角度:rotate(deg * Math.PI / 180);
    ③ 反向将画布坐标系移回初始坐标点 translate(-cx,-cy);
    ④ 绘制图像。

    步骤一需要获知画布坐标系原点移动到哪里,它应当与矩形的中心重合才能达到矩形原地旋转的目的,因此,(cx,cy) 既是新坐标系的原点,也是矩形的中心点。新坐标系原点、矩形中心点共同的坐标 (cx,cy) 和矩形自身绘制时的左上角坐标(x,y)以及矩形的宽高(w,h)存在这样的数学关系:

    cx = x + w / 2
    cy = y + h / 2

    即,矩形中心点坐标和画布新坐标系原点坐标 cx 值等于矩形左上角 x 坐标值加上矩形宽度的一半、cy 值等于矩形左上角坐标 y 坐标值加上矩形高度的一半。有了这个数据,步骤三画布坐标系原路返回就不是个问题 。

    而步骤四,即绘制矩形,为什么要放在画布坐标系复原之后而不出之前呢?这是画布的思维异于常人的表现之一,它先把规划制定好,每一个规划细节都不遗漏地记录下来,规划做完了才一鼓作气把东西fill或stroke上去,而不管不顾常人的正常先后次序逻辑。切记:画布坐标系反向复原之后才能绘制矩形(或其它图像)。

    这里扩展一下:如果旋转的是用 arc() 或 arcTo() 绘制成的圆,由于 arc 和 arcTo 使用圆心而不是左上角xy坐标值定位,圆的圆心即为画布坐标系移动的坐标值,省却了一些计算。

    最后看效果:

    0

    附:canvas画布绘制原地旋转圆源码

    <style> .mama { font: normal 18px/26px sans-serif; } #canv { display: block; margin: auto; border: 1px solid gray; } .wrap { margin: 20px auto; width: 360px; } .tMid { text-align: center; } </style>   <div class="mama">     <h2 class="tMid">在canvas上绘制绕圆心旋转的圆</h2>     <canvas id="canv"></canvas>     <div class="wrap">         <label for="rngCx">调节圆心X坐标位置 :</label>         <input id="rngCx" type="range" min="0" max="400" value="60" />         <output id="cxData">60</output>         <br>         <label for="rngCy">调节圆心Y坐标位置 :</label>         <input id="rngCy" type="range" min="0" max="400" value="60" />         <output id="cyData">60</output>     </div> </div>   <script>   var ctx = canv.getContext('2d'); var w = canv.width = 400, h = canv.height = 400; var deg = 0, cx = 60, cy = 60, r = 50, raf = null;   /* 径向渐变 */ var gradient = ctx.createRadialGradient(190, 200, 15, 200, 200, 280); gradient.addColorStop(0, 'red'); gradient.addColorStop(.15, 'orange'); gradient.addColorStop(.3, 'yellow'); gradient.addColorStop(.45, 'green'); gradient.addColorStop(.51,'cyan'); gradient.addColorStop(.85,'blue'); gradient.addColorStop(1,'purple');   ctx.fillStyle = gradient;   draw_degCircle();   /* 滑杆输入事件 :改变圆心 */ rngCx.oninput = rngCy.oninput = function(e) {     raf = cancelAnimationFrame(raf);     cx = cxData.value = rngCx.value;     cy = cyData.value = rngCy.value;     draw_degCircle(); };   /* 函数 :画绕圆心旋转的圆 */ function draw_degCircle() {     ctx.clearRect(0,0,400,400);     ctx.save();     ctx.beginPath();     ctx.translate(cx, cy);     ctx.rotate(deg * Math.PI / 180);     ctx.translate(-cx, -cy);     ctx.arc(cx, cy, r, 0, 2 * Math.PI);     ctx.fill();     ctx.restore();     deg = (deg + 1) % 360;     raf = requestAnimationFrame(draw_degCircle); };   </script>

    代码可以复制到 pencil code 运行以查看效果,也可以将代码存为本地HTML文档后运行。

    评分

    参与人数 3威望 +130 金钱 +260 经验 +130 收起 理由
    小辣椒 + 50 + 100 + 50 赞一个!
    南无月 + 30 + 60 + 30 很给力!
    红影 + 50 + 100 + 50 赞一个!

    查看全部评分

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

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

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

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

    发表于 2024-3-30 13:48 | 显示全部楼层
    这个代码好玩,那个旋转的圆,在移动横向纵向位置时,颜色也跟着变化呢
     
    回复 支持 反对

    使用道具 举报

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

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

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

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

    发表于 2024-3-30 13:50 | 显示全部楼层
    canvas画布绘制旋转的图像,多了点步骤,但也有了更多的组合呢
     
    回复 支持 反对

    使用道具 举报

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

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

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

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

    发表于 2024-3-30 13:55 | 显示全部楼层
    这个圆还能自己旋转。在xy等于200的时候,也就是居中时候,颜色也差不多居中,都几乎看不出旋转了呢。
    又试了试,好像y200,,192左右,颜色最居中
     
    回复 支持 反对

    使用道具 举报

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

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

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

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

    发表于 2024-3-30 13:55 | 显示全部楼层
    这个好玩,黑黑又带来新的知识新的效果,这个太棒了
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2024-3-30 16:29 | 显示全部楼层
    红影 发表于 2024-3-30 13:48
    这个代码好玩,那个旋转的圆,在移动横向纵向位置时,颜色也跟着变化呢

    渐变是整个画布的渐变,在不同区域呈现的图像,只要使用 gradient 填充或描边,色彩都不一样
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2024-3-30 16:29 | 显示全部楼层
    红影 发表于 2024-3-30 13:55
    这个圆还能自己旋转。在xy等于200的时候,也就是居中时候,颜色也差不多居中,都几乎看不出旋转了呢。
    又 ...

    好玩吧
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2024-3-30 16:30 | 显示全部楼层
    红影 发表于 2024-3-30 13:50
    canvas画布绘制旋转的图像,多了点步骤,但也有了更多的组合呢

    对,有无限可能
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2024-3-30 16:31 | 显示全部楼层
    红影 发表于 2024-3-30 13:55
    这个好玩,黑黑又带来新的知识新的效果,这个太棒了

    其实在做时钟过程中类似的也有,只是时钟的需求与别的不同,不变展示更多的东东
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2024-3-30 17:06 | 显示全部楼层
    感觉我有缺课。。
    var gradient = ctx.createRadialGradient(190, 200, 15, 200, 200, 280);
    这个径向渐变这些数据是什么意思呢。。。

    我看这个圆移到哪里,就显示哪里的渐变。。
    感觉红黄变得最自然,其它颜色变化有点硬,想调一下,可惜不懂怎么调
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2024-3-30 17:07 | 显示全部楼层
    gradient.addColorStop(0, 'red');
    gradient.addColorStop(.15, 'orange');
    gradient.addColorStop(.3, 'yellow');
    gradient.addColorStop(.45, 'green');
    gradient.addColorStop(.51,'cyan');
    gradient.addColorStop(.85,'blue');
    gradient.addColorStop(1,'purple');

    还有就是这些颜色前面的数字,有的是整数,有的不是。。。也不知道是控制啥的。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2024-3-30 17:12 | 显示全部楼层
    我把小圆放大到半径300,显示了背景上所有渐变,发现里面不同色彩的圆,中心点不在一个点上啊。。。
    还各自旋转,方向并不相同。。
    看上去各转各的。。(咦,是不是因为中心点不在一个位置,大家围着自己的中心点转,所以就各转各的了)
    这个有意思了。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2024-3-30 18:09 | 显示全部楼层
    南无月 发表于 2024-3-30 17:12
    我把小圆放大到半径300,显示了背景上所有渐变,发现里面不同色彩的圆,中心点不在一个点上啊。。。
    还各 ...

    画布就 400*400,圆的半径300的画,实际上这个圆有一部分在外面了,你能看到的是里面部分。由于画布设置了径向渐变,圆显示的色彩是画布渐变的色彩。径向渐变是一圈一圈的,所以你看到酱紫的效果
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2024-3-30 18:11 | 显示全部楼层
    本帖最后由 马黑黑 于 2024-3-30 18:24 编辑
    南无月 发表于 2024-3-30 17:07
    gradient.addColorStop(0, 'red');
    gradient.addColorStop(.15, 'orange');
    gradient.addColorStop(.3, ' ...

    这是配合前面一句设置画布的径向渐变,从 0 到 1 取值,其实就是 0% ~ 100% 这么个意思。这些的前面那句,是设置径向渐变的范围(具体看后面的回复)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2024-3-30 18:12 | 显示全部楼层
    马黑黑 发表于 2024-3-30 18:09
    画布就 400*400,圆的半径300的画,实际上这个圆有一部分在外面了,你能看到的是里面部分。由于画布设置 ...

    是的,有一部分在外面。半径200,稍移一下也到外面了。。
    其实我是好奇,为了看背景渐变全景才设这么大的。。
    有奇效
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2024-3-30 18:15 | 显示全部楼层
    马黑黑 发表于 2024-3-30 18:11
    这是配合前面一句设置画布的径向渐变,从 0 到 1 取值,其实就是 0% ~ 100% 这么个意思。这些的前面那句 ...

    .15是指宽度?还是指位置?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2024-3-30 18:16 | 显示全部楼层
    南无月 发表于 2024-3-30 18:12
    是的,有一部分在外面。半径200,稍移一下也到外面了。。
    其实我是好奇,为了看背景渐变全景才设这么大 ...

    你想看完整 的背景,可以画一个矩形:

    ctx.fillStyle = gradient;
    ctx.fillRect(0,0,400,400);

    把 draw_degCircle(); 暂时注释掉
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2024-3-30 18:17 | 显示全部楼层
    马黑黑 发表于 2024-3-30 18:11
    这是配合前面一句设置画布的径向渐变,从 0 到 1 取值,其实就是 0% ~ 100% 这么个意思。这些的前面那句 ...

    var gradient = ctx.createRadialGradient(190, 200, 15, 200, 200, 280);
    这六个数字是范围?
    之前有没有相关的贴子啊,我搜一下。。
    缺课严重
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2024-3-30 18:20 | 显示全部楼层
    马黑黑 发表于 2024-3-30 18:16
    你想看完整 的背景,可以画一个矩形:

    ctx.fillStyle = gradient;

    矩形0.0位置旋转和以中心点位置旋转可以理解。。下方代里中这个圆的显示,是不是可以想象成一个以中心点向外径向渐变的方形颜色画布(隐藏的),圆的位置到哪里,就显示那一块的渐变。。还是红黄渐变比较自然。。

    这是我在你网站里的回复,这样理解是错的么?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2024-3-30 18:21 | 显示全部楼层
    马黑黑 发表于 2024-3-30 18:16
    你想看完整 的背景,可以画一个矩形:

    ctx.fillStyle = gradient;

    大哥,我不会画的呀。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-12-16 02:05 , Processed in 0.104560 second(s), 29 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

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