热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HTML5Canvas:绘制渐变色

web前端|H5教程HTML5,CANVAS,绘制渐变色web前端-H5教程HTML5CANVAS:绘制渐变色仿易贷365源码,ubuntu运行qt命令,汽车故障小爬虫,中国菜刀一

web前端|H5教程HTML5 Canvas:绘制渐变色
HTML5,CANVAS,绘制渐变色
web前端-H5教程
HTML5 CANVAS:绘制渐变色
仿易贷365源码,ubuntu运行qt命令,汽车故障小爬虫,中国菜刀一句话php往哪里上传,seo 网站排名lzw
  HTML5 Canvas渐变是一种用于填充或描边图形的颜色模式。渐变色是由不同的颜色进行过渡,而不是单一的颜色。先来看几个canvas渐变色的例子:
网上书店源码设计下载,ubuntu网卡加网关,用爬虫采集号码,php = ==,seo自学方向lzw
HTML5 Canvas:绘制渐变色
零食网站源码app,vscode下载java,ubuntu asm,打开tomcat界面,sqlite 增加表字段,discuz插件分享,最简单的前端开发框架,骷髅爬虫的头颅图片,php模板教程,亚马逊站内广告seo,jspO2O网站源码,养生网页设计模板,安卓 app 模板lzw
  渐变按照类型来分可以分为两种类型:

线性渐变
  径向渐变
线性渐变以线性的模式来改变颜色,也就是水平,垂直或对角方向。
径向渐变以圆形模式来改变颜色,颜色以圆形的中心向外辐射。
线性渐变
正如前面所说,线性渐变以线性的模式来改变颜色。我们可以通过2D上下文的createLinearGradient()方法来创建一个线性渐变。下面是一个例子:

var canvas = document.getElementById("ex1");var cOntext= canvas.getContext("2d");var x1 = 0;var y1 = 0;var x2 = 100;var y2 = 0;var linearGradient1 = context.createLinearGradient(x1,y1,x2,y2);

createLinearGradient()函数有4个参数:x1,y1,x2和y2。这4个参数决定渐变的方向和距离。线性渐变会从第一个点(x1,y1)扩展到第二个点(x2,y2)。

水平的线性渐变仅仅是水平方向的参数值(x1和x2)不同,例如:

var x1 = 0;var y1 = 0;var x2 = 100;var y2 = 0;var linearGradient1 = context.createLinearGradient(x1,y1,x2,y2);

垂直的线性渐变仅仅是垂直方向的参数值(y1和y2)不同,例如:

var x1 = 0;var y1 = 0;var x2 = 0;var y2 = 100;var linearGradient1 = context.createLinearGradient(x1,y1,x2,y2);

一个对角线的线性渐变水平和垂直方向上的参数都不相同,例如:

var x1 = 0;var y1 = 0;var x2 = 100;var y2 = 100;var linearGradient1 = context.createLinearGradient(x1,y1,x2,y2);

颜色停止点(Color Stops)

在上面的例子中,并没有指明线性渐变使用什么颜色。为了指明使用什么渐变颜色,可以在渐变对象上使用addColorStop()方法来指定。例如:

var linearGradient1 = context.createLinearGradient(0,0,100,0);linearGradient1.addColorStop(0, 'rgb(255, 0, 0)');linearGradient1.addColorStop(1, 'rgb( 0, 0, 0)');

addColorStop()方法有两个参数。第一个参数是0-1之间的一个数值,这个数值指定该颜色进入渐变多长的距离,第二个参数是颜色值,例子中使用的是rgb()颜色值。

在上面的例子中为渐变添加了两种颜色。第一种颜色是红色,设置在渐变的开始处。第二种颜色是黑色,设置在渐变的结束处。
你可以添加通过addColorStop()函数来添加更多的颜色。例如下面的例子添加了三种颜色:

var linearGradient1 = context.createLinearGradient(0,0,100,0);linearGradient1.addColorStop(0 , 'rgb(255, 0, 0)');linearGradient1.addColorStop(0.5, 'rgb( 0, 0, 255);linearGradient1.addColorStop(1 , 'rgb( 0, 0, 0)');

上面的代码在渐变的中间添加了一个蓝色。整个渐变将平滑的从红色过渡到蓝色,在过渡到黑色。

使用渐变来填充和描边图形

你可以使用渐变来填充或描边图形。要填充或描边图形可以通过2D上下文的fillStyle或strokeStyle属性来完成。下面是一个示例代码:

var linearGradient1 = context.createLinearGradient(0,0,100,0);linearGradient1.addColorStop(0 , 'rgb(255, 0, 0)');linearGradient1.addColorStop(0.5, 'rgb( 0, 0, 255);linearGradient1.addColorStop(1 , 'rgb( 0, 0, 0)');context.fillStyle = linearGradient1;context.strokeStyle = linearGradient1;

通过fillStyle或strokeStyle属性来指向渐变对象即可完成渐变的填充或描边。

现在我们可以为图形填充渐变色或描边渐变色。下面是一个例子,一个矩形的填充渐变色和一个矩形的描边渐变色。

var canvas = document.getElementById("ex2");var cOntext= canvas.getContext("2d");var linearGradient1 = context.createLinearGradient(0,0,100,0);linearGradient1.addColorStop(0 , 'rgb(246, 36, 89)');linearGradient1.addColorStop(0.5, 'rgb( 31, 58, 147)');linearGradient1.addColorStop(1 , 'rgb( 34, 49, 63)');context.fillStyle = linearGradient1;context.fillRect(10,10,100, 100);var linearGradient2 = context.createLinearGradient(125,0, 225,0);linearGradient2.addColorStop(0 , 'rgb(255, 0, 0)');linearGradient2.addColorStop(0.5, 'rgb( 0, 0, 255)');linearGradient2.addColorStop(1 , 'rgb( 0, 0, 0)');context.strokeStyle = linearGradient2;context.strokeRect(125, 10, 100, 100);

HTML5 Canvas:绘制渐变色

渐变的长度
我们在使用渐变的时候要非常明白的知道渐变的长度的概念。如果我们设置渐变从x=10扩展到x=110的距离,那么渐变只会作用在水平方向上从10到110的距离的范围内。超出这个范围的图形将任然受渐变色的影响,但是在这个范围之外的颜色只会是渐变的开始或结束颜色。
距离来说,加入有一个水平线性渐变,x1=150,x2=350。渐变从蓝色过渡到绿色。那么所有水平方向定位x值小于150的图形都会使用蓝色蓝填充。所有水平方向定位x值大于350的图形都会使用绿色来填充。只有那些在水平方向定位x值在150到350之间的图形会使用蓝绿渐变色来填充。
具体来看下面的代码,这里绘制了5个矩形,并用上面所说的渐变来填充它们,让我们来看看效果:

var linearGradient1 = context.createLinearGradient(150, 0, 350,0);linearGradient1.addColorStop(0, 'rgb(0, 0, 255)');linearGradient1.addColorStop(1, 'rgb(0, 255, 0)');context.fillStyle = linearGradient1;context.fillRect(10,10,130, 100);context.fillRect(150,10, 200, 100);context.fillRect(360,10, 130, 100);context.fillRect(100,120, 150, 100);context.fillRect(280,120, 150, 100);

HTML5 Canvas:绘制渐变色

从上面的结果可以看出,在渐变区域之外的图形仅会使用开始或结束颜色来填充。

渐变长度是非常重要的概念,需要大家仔细体会。只有掌握它才能在使用渐变是获得正确的结果。

径向渐变

径向渐变是一种圆形的颜色扩展模式,颜色从圆心位置开始向外辐射。下面是一个例子:HTML5 Canvas:绘制渐变色

一个径向渐变于两个圆形来定义。每一个圆都有一个圆心和一条半径。下面是示例代码:

var x1 = 100; // 第一个圆圆心的X坐标var y1 = 100; // 第一个圆圆心的Y坐标var r1 = 30; // 第一个圆的半径var x2 = 100; // 第二个圆圆心的X坐标var y2 = 100; // 第二个圆圆心的Y坐标var r2 = 100; // 第二个圆的半径var radialGradient1 = context.createRadialGradient(x1, y1, r1, x2, y2, r2);radialGradient1.addColorStop(0, 'rgb(0, 0, 255)');radialGradient1.addColorStop(1, 'rgb(0, 255, 0)');context.fillStyle = radialGradient1;context.fillRect(10,10, 200, 200);

如上面的代码所示,这里有两个圆,圆心分别为x1,y1和x2,y2,它们的半径分别为r1和r2,这些值将作为参数传入到2D上下文的createRadialGradient()方法中。
这两个圆必须设置不同的半径,形成一个内圆和一个外圆。这样渐变色就从一个圆形辐射到另一个圆形。
颜色停止点会被添加到这两个圆形之间,例如上面的代码中,第一个颜色停止点中的参数0表示该颜色从第一个圆形开始,第二个颜色停止点中的参数1表示第二种颜色从第二个圆形开始。
下面是上面代码的返回结果:

HTML5 Canvas:绘制渐变色

如果两个圆形的圆心位置相同,那么径向渐变将是一个完整的圆形。如果两个圆的圆心位置不相同,那么径向渐变看起来就像是一个探照灯发出的光线。例如下面的样子:

var x1 = 100;var y1 = 100;var r1 = 30;var x2 = 150;var y2 = 125;var r2 = 100;var radialGradient1 = context.createRadialGradient(x1, y1, r1, x2, y2, r2);radialGradient1.addColorStop(0, 'rgb(0, 0, 255)');radialGradient1.addColorStop(1, 'rgb(0, 255, 0)');context.fillStyle = radialGradient1;context.fillRect(10,10, 200, 200);

得到的结构如下所示:

HTML5 Canvas:绘制渐变色

相关文章:

css按钮渐变色

p+css背景渐变色代码示例

css渐变色彩 省略标记 嵌入字体 文本阴影的详细介绍


推荐阅读
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
author-avatar
夏目nyako酱丶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有