渐变颜色填充方式有两种:线性或径向。

  1. 线性渐变填充会创建一个水平 、 垂直或者对角线的填充图案。
  2. 径向渐变填充会自中心点创建一个放射状填充图案。

1 线性渐变

1.1 线性水平渐变

(1)基本形状

Steve Fulton 与 Jeff Fulton 举了一个示例,来说明如何设置线性水平渐变。

//创建渐变对象
var gr = context.createLinearGradient(0, 0, 100, 0);//颜色断点
gr.addColorStop(0, 'rgb(255,0,0)');
gr.addColorStop(.5, 'rgb(0,255,0)');
gr.addColorStop(1, 'rgb(255,0,0)');//设置渐变
context.fillStyle = gr;//绘制矩形
context.fillRect(0, 0, 100, 100);

运行结果:

首先使用 context 的 createLinearGradient() 来创建渐变对象。语法为:context.createLinearGradient(x0,y0,x1,y1);

参数 描述
x0 渐变开始点的 x 坐标
y0 渐变开始点的 y 坐标
x1 渐变结束点的 x 坐标
y1 渐变结束点的 y 坐标

Linear /ˈlɪniə®/
Of, relating to, or resembling a line; straight.

gradient /ˈɡreɪdiənt/
Physics The rate at which a physical quantity, such as temperature or pressure, changes relative to change in a given variable, especially distance.

四个入参都是坐标,目的是确定渐变的范围。

注意:因为需要创建的是一个水平渐变,所以 y 值都是 0。

渐变对象创建好之后,就可以设置色标。语法:gradient.addColorStop(stop,color);

参数 描述
stop 介于 0.0 与 1.0 之间的值,表示渐变中开始与结束之间的位置。
color 在结束位置显示的 CSS 颜色值

可以多次调用 addColorStop() 方法来改变渐变。

比如示例代码中设置的渐变是起点 (0) 为红色 、 中心点 (0.5) 为绿色 、 终点 (1)为红色。所以最后的效果是出现一个 “ 红-绿-红 ” 渐变颜色。

为了说明渐变对象的影响范围,我们再添加两个矩形,一个窄,一个宽。

context.fillRect(0, 100, 50, 100);
context.fillRect(0, 200, 200, 100);

渲染结果:

从渲染结果中可以看出,只要有形状在水平渐变的垂直区域内,就会渲染出水平渐变效果。

综合运用这些方法,就可以做出非凡的彩虹效果。

var gr = context.createLinearGradient(0, 0, 300, 0);gr.addColorStop(0, '#fff');
gr.addColorStop(0.15, '#8B00FF');
gr.addColorStop(0.25, '#0000FF');
gr.addColorStop(0.35, '#00FFFF');
gr.addColorStop(0.45, '#00FF00');
gr.addColorStop(0.55, '#FFFF00');
gr.addColorStop(0.65, '#FF7F00');
gr.addColorStop(0.75, '#FF0000');
gr.addColorStop(1, '#fff');//生成渐变
context.fillStyle = gr;context.fillRect(0, 0, 300, 300);

运行结果:

(2)边框

也可以对形状的边框应用渐变颜色。

var gr = context.createLinearGradient(0, 0, 100, 0);
gr.addColorStop(0, 'rgb(255,0,0)');
gr.addColorStop(.5, 'rgb(0,255,0)');
gr.addColorStop(1, 'rgb(255,0,0)');context.strokeStyle=gr;
context.strokeRect(0,0,100,100);
context.strokeRect(0,100,50,100);
context.strokeRect(0,200,200,100);

运行结果:

这里的示例代码与之前示例的区别是:先把 strokeStyle 设置为渐变对象,接着调用 strokeRect() 来绘制边框。

stroke /strəʊk/
v.
To mark with a single short line.

(3)特殊形状

由点组成、封闭的特殊形状,也可以填充渐变颜色。只要形状的起止点相同,就是封闭的。

var gr = context.createLinearGradient(0, 0, 100, 0);gr.addColorStop(0, 'rgb(255,0,0)');
gr.addColorStop(.5, 'rgb(0,255,0)');
gr.addColorStop(1, 'rgb(255,0,0)');context.fillStyle = gr;context.beginPath();
context.moveTo(0, 0);
context.lineTo(50, 0);
context.lineTo(100, 50);
context.lineTo(50, 100);
context.lineTo(0, 100);
context.lineTo(0, 0);context.stroke();
context.fill();
context.closePath();

运行结果:

1.2 线性垂直渐变

(1)形状

线性垂直渐变与水平渐变类似,只不过 createLinearGradient() 中的 x 都为 0。

var gr = context.createLinearGradient(0, 0, 0, 300);gr.addColorStop(0, '#fff');
gr.addColorStop(0.15, '#8B00FF');
gr.addColorStop(0.25, '#0000FF');
gr.addColorStop(0.35, '#00FFFF');
gr.addColorStop(0.45, '#00FF00');
gr.addColorStop(0.55, '#FFFF00');
gr.addColorStop(0.65, '#FF7F00');
gr.addColorStop(0.75, '#FF0000');
gr.addColorStop(1, '#fff');context.fillStyle = gr;context.fillRect(0, 0, 300, 300);

运行结果:

(2)边框

线性垂直渐变也可以应用与边框。

var gr = context.createLinearGradient(0, 0, 0, 100);
gr.addColorStop(0, 'rgb(255,0,0)');
gr.addColorStop(.5, 'rgb(0,255,0)');
gr.addColorStop(1, 'rgb(255,0,0)');context.strokeStyle = gr;context.beginPath();
context.moveTo(0, 0);
context.lineTo(50, 0);
context.lineTo(100, 50);
context.lineTo(50, 100);
context.lineTo(0, 100);
context.lineTo(0, 0);context.stroke();
context.closePath();

运行结果:

(3)对角线

createLinearGradient() 方法中的起始点与终止点成斜 45 度对角,就可以做出对角线的渐变效果。当然也可以做成其它斜度。

var gr = context.createLinearGradient(0, 0, 100, 100);gr.addColorStop(0, 'rgb(255,0,0)');
gr.addColorStop(.5, 'rgb(0,255,0)');
gr.addColorStop(1, 'rgb(255,0,0)');context.fillStyle = gr;
context.beginPath();
context.moveTo(0, 0);
context.fillRect(0, 0, 100, 100);
context.closePath();

运行结果:

2 径向渐变

context 的 createLinearGradient() 方法可以创建放射状的径向渐变对象。

语法:context.createRadialGradient(x0,y0,r0,x1,y1,r1);

参数 描述
x0 渐变的开始圆的 x 坐标
y0 渐变的开始圆的 y 坐标
r0 开始圆的半径
x1 渐变的结束圆的 x 坐标
y1 渐变的结束圆的 y 坐标
r1 结束圆的半径

(1)基本形状

var gr = context.createRadialGradient(50, 50, 25, 50, 50, 100);gr.addColorStop(0, 'rgb(255,0,0)');
gr.addColorStop(.5, 'rgb(0,255,0)');
gr.addColorStop(1, 'rgb(255,0,0)');context.fillStyle = gr;
context.fillRect(0,0,200,200);

运行结果:

示例代码先在点 (50,50) 以半径为 25 长度,画出一个起始圆;接着在点 (50,50) 以半径为 100 长度,画出一个终止圆;最后在它们之间设置径向渐变。

如果终止圆的圆心在起始圆的圆心右下角,就会产生这样的效果。

context.createRadialGradient(50, 50, 25, 100, 100, 100);

(2)其它形状

除了对正方形应用径向渐变,也可以把径向渐变应用于其他形状的图形,比如圆形。

context.arc(100,100,100,(Math.PI/180)*0,(Math.PI/180)*360,false);
context.fill();

其他部分代码与上一例的代码相同。

运行结果:

(3)边框

也可以把径向渐变应用于边框。

context.strokeStyle = gr;context.arc(100,100,50,(Math.PI/180)*0,(Math.PI/180)*360,false);
context.stroke();

其他部分代码与上一例的代码相同。

运行结果:

这里的圆会比前面示例中的圆小一半,这样才能得到径向渐变效果。


综合运用以上知识点,可以做出让人惊叹的效果。

var gr = context.createRadialGradient(50, 50, 25, 100, 100, 100);gr.addColorStop(0, '#fff');
gr.addColorStop(0.15, '#8B00FF');
gr.addColorStop(0.25, '#0000FF');
gr.addColorStop(0.35, '#00FFFF');
gr.addColorStop(0.45, '#00FF00');
gr.addColorStop(0.55, '#FFFF00');
gr.addColorStop(0.65, '#FF7F00');
gr.addColorStop(0.75, '#FF0000');
gr.addColorStop(1, '#fff');context.fillStyle = gr;
context.fillRect(0, 0, 200, 200);

运行结果:

说说在 Canvas 中如何填充渐变颜色相关推荐

  1. ai怎么渐变颜色_AI中怎么调渐变颜色

    AI中怎么调渐变颜色?下面是一篇关于AI中调渐变颜色的教程,希望对新手朋友有所帮助吧! 首先,我们来看看效果图: 步骤如下: 1.打开一个带有渐变背景的素材.现在我们希望在不改变背景色调关系的情况下, ...

  2. html中怎么设置渐变颜色设置,css中渐变色怎么设置

    这篇文章主要介绍了css3编写浏览器背景渐变背景色的方法,现在分享给大家,也给大家做个参考. css中渐变色怎么设置 css 给网页中的背景设置渐变色,css的渐变颜色可以指定固定的两个颜色之间的线性 ...

  3. html5 canvas文字颜色,我可以通过HTML5 Canvas中的字符文本颜色来做吗?

    我告诉你这个解决方法.基本上你一次输出一个字符,并使用内置的measureText()函数来确定每个字母的宽度.然后我们将我们想要绘制的位置偏移相同的数量.您可以修改此代码段,以产生所需的效果. 假设 ...

  4. html中如何使用渐变颜色代码,html – 如何在CSS中使用渐变作为字体颜色?

    您可以使用位于彼此顶部的多个跨度,并为其中的每一个分配不同的高度和颜色.它真的很丑的编码明智,但它的作品. http://jsfiddle.net/7yBNv/ 文本选择行为有点时髦,但不是太糟糕.并 ...

  5. html5怎么转换,HTML5 canvas中的转换方法

    转换方法 scale(scalewidth,scaleheight)                缩放当前绘图至更大或更小 scalewidth         缩放当前绘图的宽度 (1=100%, ...

  6. ai怎么渐变颜色_AI教程!渐变色噪点质感城堡场景插画绘制过程分享

    教程步骤 步骤 01 分析绘制思路,将插画分成背景+主体部分(云.山.树林.城堡.地面.湖面). 步骤 02 在AI里新建一个800*600px的画板 接着用矩形工具画一个与画板大小一样的矩形并填充渐 ...

  7. canvas中如何设置渐变色

    CanvasGradient在canvas中是专门设置颜色渐变的一个类.它分为两种,一种是createLinearGradient(),即线性渐变:另一种是createRadialGradient() ...

  8. html渐变颜色填充,在画布形状中填充渐变色

    您也可以在画布形状内填充渐变色.渐变只是从一种颜色到另一种颜色的平滑视觉过渡.有两种类型的渐变可用:线性渐变和径向渐变. 创建线性渐变的基本语法可以通过以下方式给出: var grd = contex ...

  9. html5中阴影,HTML5 Canvas 中的颜色、样式和阴影的属性和方法

    颜色.样式和阴影的属性与方法 fillStyle                设置或返回用于填充绘画的颜色.渐变或模式 strokeStyle         设置或返回用于笔触的颜色.渐变或模式 ...

最新文章

  1. C++中const char*, string 与char*的转化
  2. 详解C#break ,continue, return
  3. 【DevOps+LIVE】直播复盘 – DevOps能力成长模型2018首发
  4. 随机森林和gbdt结合_决策树与迭代决策树(GBDT)
  5. 修改了模板文件tpl如何立即生效_Views视图与模板
  6. 中国风海报设计必备的墨染素材!点睛国潮风!
  7. Whitelabel Error Page : spring boot项目启动后,无法访问@RequestMapping标注的请求
  8. description方法 oc 就是NSLog使用
  9. 如何在 Azure 虚拟机里配置条带化
  10. ulimit和core文件的使用方法
  11. 〖Python APP 自动化测试实战篇①〗 - 大话闲扯 APP 自动化
  12. Protus 8.6 及以上如何找到library文件夹
  13. cimfax显示无法连接到服务器,CimFAX传真机软件
  14. 统一身份认证系统方案
  15. 2022茶艺师(中级)考试题及答案
  16. pytorch模型加密
  17. 洛谷P1427 小鱼的数字游戏
  18. NO.3 微信第三方平台代创建小程序审核发布以及小程序信息(头像,名称,简介)修改 以及微信错误码 返回信息
  19. Excel隔行插入空白行小技巧
  20. mysql存储用户昵称_mysql 微信用户昵称 emoji 完整保存 - 人人都是架构师

热门文章

  1. 2020贵州公务员考试报考指南:如何选择学习资料
  2. centos 6.5 部署 oracle 11G RAC+DG-------RAC-单实例部署DG部分(二)
  3. matlab 正版贵吗,有人使用正版MATLAB吗?
  4. 浅谈初中英语教学中如何激发学生的学习兴趣
  5. Termux安卓高级终端设置
  6. 用Python头像秒变成表情包
  7. 综合64位win10系统无法安装.Net framework3.5或出现“Error: 0x800f0922”
  8. 海康威视访客案例说明
  9. 爬取淘宝交易记录的爬虫
  10. 基于AI的图像处理软件——项目总结