渐变

Context对象可以通过createLinearGradient()和createRadialGradient()两个方法创建渐变对象,这两个方法的原型如下:

Object createLinearGradient(x1, y1, x2, y2);

创建一个从(x1, y1)点到(x2, y2)点的线性渐变对象。

Object createRadialGradient(x1, y1, r1, x2, y2, r2);

创建一个从以(x1, y1)点为圆心、r1为半径的圆到以(x2, y2)点为圆心、r2为半径的圆的径向渐变对象。

渐变对象创建完成之后必须使用它的addColorStop()方法来添加颜色,该方法的原型如下:

void addColorStop(position, color);

其中position表示添加颜色的位置,取值范围为[0, 1],0表示起点,1表示终点;color表示添加的颜色,取值可以是任何CSS颜色值。

渐变对象创建并配置完成之后就可以将其赋予Context对象的strokeStyle属性或者fillStyle属性,然后绘制的图形就具有了所需的渐变效果。

首先来完成一个直线渐变的例子:

<!DOCTYPE HTML>
<html>
<body>
<canvas id="canvas" width="800"height="800">    <p>Your browserdoes not support the canvas element!</p>
</canvas>    <script type="text/javascript">
var canvas =document.getElementById("canvas");
var context =canvas.getContext("2d");    {var lg = context.createLinearGradient(0,0, 100, 100); //可以尝试改变这里的参数,你可以获取更多   lg.addColorStop(0, '#ff0000');    lg.addColorStop(1, '#0000ff');    context.strokeStyle = lg;    context.beginPath();context.moveTo(0,0);context.lineTo(300,300)  context.stroke();}
</script>
</body>
</html>

效果:

现在来完成一个颜色垂直对称的矩形:

<!DOCTYPE HTML>
<html>
<body>
<canvas id="canvas" width="800"height="800">    <p>Your browserdoes not support the canvas element!</p>
</canvas>    <script type="text/javascript">
var canvas =document.getElementById("canvas");
var context =canvas.getContext("2d");    {//画整个矩形的上半部分var lg1 = context.createLinearGradient(10,10, 10, 110); lg1.addColorStop(0, '#ff0000');    lg1.addColorStop(1, '#0000ff');context.fillStyle = lg1;context.beginPath();context.fillRect(10,10,210,100);//画整个矩形的下半部分var lg2 = context.createLinearGradient(10,110, 10, 210); lg2.addColorStop(0, '#0000ff');    lg2.addColorStop(1, '#ff0000');context.fillStyle = lg2;context.beginPath();context.fillRect(10,110,210,100);}
</script>
</body>
</html>

效果图:

现在来看一个createRadialGradient的例子:

<!DOCTYPE HTML>
<html>
<body>
<canvas id="canvas" width="800"height="800">    <p>Your browserdoes not support the canvas element!</p>
</canvas>    <script type="text/javascript">
var canvas =document.getElementById("canvas");
var context =canvas.getContext("2d");    var rg =context.createRadialGradient(450, 150, 20, 450, 150, 100);
rg.addColorStop(0, '#ff0000');
rg.addColorStop(1, '#0000ff');
context.fillStyle = rg;
context.beginPath();
context.arc(450,150,100,0,Math.PI*2,true);
context.fill();</script>
</body>
</html>

效果图:

从三个实验可以看出,渐变的实现其实就是实现一支特殊的画笔(createLinearGradient或者createRadialGradient),但是要注意画笔渐变对象的坐标,需要和将要画的图形的坐标配对,不然,你将不能得到想要的效果。

HTML5 Canvas 渐变相关推荐

  1. HTML5图片怎么添加渐变,HTML5 canvas图和实现填充渐变形状

    本篇教程探讨了HTML5 canvas图和实现填充渐变形状,希望阅读本篇文章以后大家有所收获,帮助大家HTML5+CSS3从入门到精通 . < html PUBLIC "-//W3C/ ...

  2. CSS3 渐变新特性和HTML5 Canvas画布背景渐变实现方法详解

    CSS3 渐变新特性和HTML5 Canvas画布背景渐变实现方法详解 大家好,又见面了,感觉我上一篇博客对部分同学都挺有帮助的,于是我决定继续写下去,会继续的解析知识点让大家更容易理解,希望能给大家 ...

  3. HTML5绘制渐变直线,如何使用HTML5 Canvas绘制动态线性渐变

    如果要使用HTML5 Canvas绘制线性渐变,需要用到createLinearGradient()方法.下面我们就来一起看看具体的内容. createLinearGradient() createL ...

  4. html5 Canvas颜色渐变(画图很重要)

    如果我们想要给图形上色,有两个重要的属性可以做到:fillStyle 和 strokeStyle.    fillStyle = color    strokeStyle = color stroke ...

  5. HTML5 canvas画图

    HTML5 canvas画图 HTML5 <canvas> 标签用于绘制图像(通过脚本,通常是 JavaScript). 不过,<canvas> 元素本身并没有绘制能力(它仅仅 ...

  6. HTML5 Canvas 基础API和实例

    开发HTML代码是一件简单的事情,一个文字编辑器,然后一个支持HTML5的浏览器即可(本人的浏览器是Firefox8.0.1).了解HTML的朋友应该知道,HTML5中最让人兴奋的API是canvas ...

  7. c html canvas,HTML5 canvas

    绘制圆形 function draw(id){ let canvas = document.getElementById(id) if (canvas == null){ return false } ...

  8. 《HTML5 Canvas开发详解》——导读

    https://yqfile.alicdn.com/bc81e95aba389209ecb7176965c56b0ba2d9c780.png" > 前言 HTML5 Canvas为开发 ...

  9. HTML5 Canvas

    HTML5 Canvas 转自:https://blog.csdn.net/u012468376/article/details/73350998 一.canvas简介 ​  <canvas&g ...

最新文章

  1. 1亿级PV网站架构演变
  2. 中国AI专利申请量占全球74%,腾讯、百度、OPPO前五
  3. python openstack究竟能干嘛_openstack是什么,能干什么
  4. 建立合理的索引提高SQL Server的性能
  5. 【转】centos安装vim7.4(转)
  6. roads 构筑极致用户体验_长安马自达「悦马星空」计划上线,为用户带来极致服务体验...
  7. phpcms关于 {if} 判断后台是否上传{thumb} 缩略图 - 代码篇
  8. mysql执行动态说起来_MySQL实战45讲学习笔记:第十四讲
  9. SQL中DB2数据库修改某字段长度或类型
  10. jemter java请求后置_jmeter完成一个java请求-本机调用
  11. python中rgb颜色_python颜色显示
  12. 灵悟礼品网上专卖店——分析类似项目的优缺点
  13. 可视化神经网络实验报告,可视化神经网络工具
  14. 尔雅 2017大学计算机基础答案,2018超星尔雅大学计算机基础答案
  15. SQL练习题——店铺UV、访客信息
  16. discuz制作自己的门户列表模板
  17. python实现 文件排版
  18. win10兼容模式怎么设置_win10开始菜单没反应怎么办?是因为没有设置这个
  19. JQuery实现简易音乐播放器
  20. JS密码校验规则前台验证(不能连续字符(如123、abc)连续3位或3位以上)(不能相同字符(如111、aaa)连续3位或3位以上)

热门文章

  1. 【JavaWeb】十一、VUEElement
  2. 一个 Java 线程池bug引发的 GC 机制思考
  3. 拼单点外卖,AA付款
  4. HDFS FoldedTreeSet的引入以及FBR优化处理
  5. 【Gitee简单入门】
  6. JavaScript的分支语句—— IF语句 解释及基础应用方式
  7. 01-python基本数据类型
  8. 计算机磁盘桌面,右键点击桌面计算机
  9. 多隆:从工程师到阿里巴巴合伙人
  10. Nginx解决前端跨域问题