码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 前端Canvas入门——一些注意事项


    创建渐变的三种方法:

    createLinearGradient() - 线性渐变

    createRadialGradient() - 径向渐变(放射性渐变)

    createConicGradient() - 锥形渐变

    这三种的核心观点都是:

    创建一个gradient对象,然后调用addColorStop()方法给这个对象添加渐变色。

    区别就是里面的形参数量、含义不一样,需要注意。

    有个特别需要注意的点:

    createPattern()  - 图片画笔

    你可以理解为这个方法就是创建一个新的画笔工具,然后使用这个工具去进行绘画。

    举个例子:

    1. let img = new Image()
    2. img.src = './images/5.png'
    3. img.onload = () => {
    4. // 创建重复元素对象 - repeat是CSS中的内容
    5. let png = ctx.createPattern(img, 'repeat')
    6. // 类似于一个画笔
    7. ctx.fillStyle = png
    8. ctx.fillRect(0, 0, 400, 400)
    9. }

    这几个方法你可以想象成创建一个画笔。

    不同的是,有些是创建的时候就限制了画笔的大小。

    比如说,createLinerGradient()里面就有关于生效的距离:

    1. const gradient = ctx.createLinearGradient(0, 0, 600, 400)
    2. gradient.addColorStop(0, 'red')
    3. gradient.addColorStop(0.5, 'yellow')
    4. gradient.addColorStop(1, 'blue')
    5. ctx.moveTo(0, 0)
    6. ctx.lineTo(400, 400)
    7. ctx.lineWidth = 30
    8. ctx.strokeStyle = gradient
    9. ctx.stroke()

     

    从上面的例子可以看出,如果你的线条长度小于渐变色的宽度(上文中渐变色的宽度是600,但是线条的宽度是400),那么渐变色有可能显示不全——丢失部分/全部蓝色渐变效果。

    这是因为在gradient对象方法——addColorStop(0, '颜色')里面的0是指向量的长度,它的长度是这个向量跟下一个向量之间的长度。

    比如说例子中的就是0-0.5之间就是从红色渐变到黄色,而0.5-1之间就是从黄色渐变到蓝色。


    而有些则是不限制大小,只看你后续使用画笔来干什么。

    比如说,例子1中的createPattern()就是看后续调用fillRect()的大小。

    但如果你使用的是stroke()方法,就只会剩下一个边框:

    今天就到这,bye~ 

  • 相关阅读:
    什么是平面文件数据库? 如何导入多种格式的文件:DSV、JSON、XML?
    PHP 跟据用户IP获取所在国家高效解决方案(GEOIP)
    [AI资讯·0618] 快手AI模型“可灵“在质量优于Sora,OpenAI和谷歌发布新技术推动AI视频推理发展,Gemini1.5Pro在该榜单中表现突出
    Java常用类String
    【k8s】一、基础实验环境准备
    这次彻底学明白了:四种机器学习超参数搜索方法太详细了
    数字图像处理 使用C#进行图像处理九 实现傅里叶变换
    当图网络遇上计算机视觉!计算机视觉中基于图神经网络和图Transformer的方法和最新进展...
    代码随想录(番外)图论1
    nifi从入门到实战(保姆级教程)——身份认证
  • 原文地址:https://blog.csdn.net/m0_54066656/article/details/140407017
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号