Canvas使用渐变之-线性渐变详解

在canvas里面,除了使用纯色,我们还能把填充和笔触样式设置为渐变色:线性渐变和径向渐变。

线性渐变 createLinearGradient(x0,y0,x1,y1)  返回 CanvasGradient

四个参数分别是渐变色起始坐标x,起始坐标y,结束坐标x,结束坐标y。

渐变色沿着两点之间的一条线来进行渐变。

径向渐变 createRadialGradient(x0,y0,r0,x1,y1,r1) 返回CanvasGradient

六个参数分别是

起点圆心坐标(x0,y0)

起点圆心半径(r0)

终点圆心坐标(x1,y1)

终点圆心?半径(r1)

这两种渐变方法都会返回一个 CanvasGradient对象,这个对象定义了addColorStop(position,color)的方法。

addColorStop() 给渐变的梯度线添加一种纯色,  返回?void。

举例

1 var ctx = document.querySelector(‘canvas‘).getContext(‘2d‘);
2
3 var grad = ctx.??createLinearGradient(0,0,500,500);
4
5 grad.addColorStop(0,‘green‘);
6
7 grad.addColorStop(0.5,‘yellow‘);
8
9 grad.addColorStop(1,‘blue‘);

注意,此时在画布上已经创建了一个矩形渐变范围,坐标是 0,0,500,500;

但并没有显示出来,此时需要我们再绘出一个别的形状--以?矩形为例。

来选择我们要显示的渐变范围,这个重新绘出的矩形需要取grad的样式。

1 ctx.fillStyle = grad;
2 ctx.fillRect(x,y,w,h);

此时,也就是说我们接下来要画的矩形,使用了我们刚才创建的渐变色。

不难想象,我们预先配置好的渐变范围其实就是一个长宽各500的矩形,渐变方向

是从左上角到右下角。

但是,我们要把这个新绘制矩形的放在哪呢?

我们可以把我们配置好的500*500的渐变范围当一块地,上面被土掩盖了,下面?是各种果实。你想看哪块的果实,你就把这个新矩形画在哪里。

你可以也画一个0,0,500,500的矩形,直接把整块地翻起来。?

你也可以画一个0,0,50,50的?矩形,只能看到左上角的绿色green,因为他渐变到yellow,或许是从50之后才开始的。

你也可以画一个450,450,50,50的矩形,那么你看到的将是右下角的blue。?

时间: 2024-07-30 03:58:26

Canvas使用渐变之-线性渐变详解的相关文章

CSS3之渐变(线性渐变,径向渐变)

渐变 一.           线性渐变 1         线性渐变格式 linear-gradient([<起点> || <角度>,]? <点>, <点>-) 只能用在背景上 2         IE filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#ff0000',GradientType='1'); <style>

New UI-布局之LinearLayout(线性布局)详解

New UI-布局之LinearLayout(线性布局)详解  --转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途! 小猪Android开发交流群已建立,欢迎大家加入,无论是新手,菜鸟,大神都可以,小猪一个人的 力量毕竟是有限的,写出来的东西肯定会有很多纰漏不足,欢迎大家指出,集思广益,让小猪的博文 更加的详尽,帮到更多的人,O(∩_∩)O谢谢! 小猪Android开发交流群:小猪Android开发交流群群号:421858269 新Android UI实例大全目录:http://

Android中Canvas绘图之Shader使用图文详解

概述 我们在用Android中的Canvas绘制各种图形时,可以通过Paint.setShader(shader)方法为画笔Paint设置shader,这样就可以绘制出多彩的图形.那么Shader是什么呢?做过GPU绘图的同学应该都知道这个词汇,Shader就是着色器的意思.我们可以这样理解,Canvas中的各种drawXXX方法定义了图形的形状,画笔中的Shader则定义了图形的着色.外观,二者结合到一起就决定了最终Canvas绘制的被色彩填充的图形的样子. 类android.graphics

css3渐变之线性渐变

css3定义了两种类型的渐变,即线性渐变和径向渐变.这里我要说的是线性渐变. 为了创建一个线性渐变,你必须至少定义两种颜色结点.颜色结点即你想要呈现平稳过渡的颜色.同时,你也可以设置一个起点和一个方向(或一个角度). 语法:background: linear-gradient(direction, color-stop1, color-stop2, ...); 注意:线性渐变默认是从上到下. 从上到下的渐变: #grad {  background: -webkit-linear-gradie

【一天一个canvas】绘制一个线性渐变的矩形(五)

渐变是填充的一种相当不错的效果,结合实例2和实例3,我们可以创建一个渐变的矩形 <!doctype html> <html> <head> <meta charset="UTF-8"> </head> <style type="text/css"> canvas{border:dashed 2px #CCC} </style> <script type="text/j

canvas基础教学之线性渐变

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>color</title> <style type="text/css"> *{ margin: 0; padding: 0; } #canvas{ background-color: #666666; /*opacity: 0.2;*/ } </style&

数据结构与算法—线性表详解

前言 通过前面数据结构与算法前导我么知道了数据结构的一些概念和重要性,那么我们今天总结下线性表相关的内容.当然,我用自己的理解解分享给大家. 其实说实话,可能很多人依然分不清线性表,顺序表,和链表之间的区别和联系! 线性表:逻辑结构, 就是对外暴露数据之间的关系,不关心底层如何实现. 顺序表.链表:物理结构,他是实现一个结构实际物理地址上的结构.比如顺序表就是用数组实现.而链表用指针完成主要工作.不同的结构在不同的场景有不同的区别. 对于java来说,大家都知道List接口类型,这就是逻辑结构,

CSS3 渐变分为线性渐变和径向渐变

这种事情,我的心理很不爽快,因为这其实是一件很小的事情.我觉得这个完全不存在这一点点的时间.如果说确实没有计划也应该提前说明,而不是等着我去问.这个细节让人很不舒服.还有签定的合同,所有之前提到的福利待遇,并没有写到合同里面.所有的场景都让我觉得我到底是入职了还是没有入职呢?我是应该信任这家公司呢?还是应该相信白字黑字.我还是觉得白字黑字靠谱.再给自己一点点时间去适应,还是希望自己稳定下来.可以说这样说,虽然我选择了这里,可是我对我现在这份工作依然忐忑不安. 在团队中,总不可避免的以家长的姿态自

Android LinearLayout线性布局详解

为了更好地管理Android应用的用户界面里的各组件,Android提供了布局管理器.通过使用布局管理器,Android应用图形用户界面具有良好的平台无关性.推荐使用布局管理器来管理组件的分布.大小,而不是直接设置组件的位置和大小.可以使用布局管理器嵌套布局管理器,即也可作为一个UI组件来使用. LinearLayout可以控制组件横向排列或者纵向排列,内容不会换行,超出屏幕部分将不会显示出来. 学习图解 LinearLayout 常用XML属性及方法 [属性一]orientation 设置子组