加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

html5 Canvas绘图教程(4)—未闭合的路径及渐变色的添补要领

发布时间:2020-09-23 22:08:06 所属栏目:编程 来源:网络整理
导读:一样平常画图的方法有两种,即添补和描边,前面的文章已经讲了描边的要领stroke,本文就讲一下Canvas中添补图形的要领
副问题[/!--empirenews.page--] 一样平常画图的方法有两种,即添补和描边,前面的文章已经讲了描边的要领stroke,本文就讲一下Canvas中添补图形的要领。
添补即fill(),很直白吧?并且和strokeStyle暗示描边样式一样,fillStyle即暗示添补样式。
ctx.fillStyle = '颜色';默认的添补样式是不透明的玄色

提问:未闭合的路径可以添补吗?
可以。Canvas会从你当前路径的终点直接毗连到出发点,然后添补。如图:


但你可以发明,最后一段没有描边。
记得我们前一篇文章用4条线画了一个正方形,但canvas不会这么差劲,连直接绘制矩形的函数都没有。你可以行使fillRect()直接添补一个矩形:

复制代码

代码如下:


ctx.fillRect(x,y,width,height);


这里的x,y是指矩形的左上角出发点的坐标,记着。
说到fillRect,就不得不提strokeRect,你猜对了,他的意思就是直接描边出一个矩形。
尚有fillText与strokeText,至于浸染嘛,你也许都猜到了,我这里先不讲,各人先预习吧。

Canvas添补渐变色
在Canvas中,渐变色同样分为两种,即线性渐变和径向渐变,并且建设他们的要领也是独立的。我们先看怎样建设线性渐变。
建设线性渐变=createLinearGradient——看,依然很直接的单词。他的语法如下:
createLinearGradient(x1,y1,x2,y2)有4个参数呢!看起来好伟大,其拭魅这个挺简朴的,由于我们前面已经说了,平面天下里的一个点是由x坐标和y坐标确定的。以是,x1,y1就是暗示线性渐变的出发点坐标,x2,y2就暗示终点坐标。
这样做的甜头很明明,假如我们想建设一个斜着的线性渐变,很利便。但我们先建设一个程度的线性渐变试试吧。
var linear = ctx.createLinearGradient(100,100,200,100);渐变仿佛建设了,那么我们可以添补了吗?————这个渐变是空的,没有颜色。
往渐变条里加颜色的要领是addColorStop(位置,颜色).但要留意了,这个addColorStop不是加在画笔上,而是加在前面的谁人生涯渐变的变量上,我这里是linear.

复制代码

代码如下:


var linear = ctx.createLinearGradient(100,100,200,100);
linear.addColorStop(0,'#fff');
linear.addColorStop(0.5,'#f0f');
linear.addColorStop(1,'#333');


我这里用了3个addColorStop,即为渐变条加上了3个颜色。
留意:addColorStop的位置参数,永久是介于0-1之间的数字,可所以两位小数,暗示百分比。他没法吸取’3px’这样的参数。
这时辰,我们就可以添补渐变色了,但我们必需先把界说好的渐变赋给fillStyle.

复制代码

代码如下:


var linear = ctx.createLinearGradient(100,100,200,100);
linear.addColorStop(0,'#fff');
linear.addColorStop(0.5,'#f0f');
linear.addColorStop(1,'#333');
ctx.fillStyle = linear; //把渐变赋给添补样式
ctx.fillRect(100,100,100,100);
ctx.stroke();



留意,fillRect与strokeRect画出的都是独立的路径,如上面的代码,在fillRect后挪用描边,并不会把方才画出的矩形描边,strokeRect同理。
颠末测试后,发明白一个很蛋疼的题目,就是线性渐变的坐标是相对付整个Canvas范畴而言的。好比我这里,我的线性渐变出发点就是100,100,假如我画了一个矩形在0,0的位置,用这个渐变来添补,就会发明没有添补——由于我的渐变的范畴基础就高出了矩形的范畴。
这真是一个坑爹的设定。

提问:渐变出发点之前与渐变终点之后还会添补颜色吗?
会。出发点之前的颜色就是出发点色,终点之后的颜色一向是终点色。
怎样终止终点色,你可以在竣事色之后再填一个透明的竣事色。如:

复制代码

代码如下:


linear.addColorStop(0.99,'#333');
linear.addColorStop(1,'rgba(51,51,51,0)');


依照前面的打算,我再建一个倾斜的线性渐变试试。只必要改createLinearGradient的参数即可.

复制代码

代码如下:


var linear = ctx.createLinearGradient(100,100,200,200);


结果如图:

然后,让我们来试试径向渐变(圆形渐变)。与createLinearGradient相同,建设径向渐变的要领是:createRadialGradient,但他们的参数可大不沟通:
createRadialGradient(x1,y1,r1,x2,y2,r2)个中的x1,y1,x2,y2仍旧暗示出发点和终点,不外这里的出发点和终点都是一个圆,而x,y则是圆心的坐标。以是,r1与r2别离是出发点圆的半径和终点圆的半径。如图:


在我的印象中,貌似径向渐变就是一个圆,圆心就是出发点,圆的半径就是终点。但canvas内里的径向渐变竟然搞的纷歧样了,出发点一个圆,终点一个圆,和我的领略有差距。
我们从最简朴的做起。起首,做一个很正规的径向渐变,即渐变圆形的圆心就是渐变的出发点。因为正规的径向渐变,中心即圆心,以是我们应该只管停止产生偏斜。那么,我们把终点圆的圆心与出发点圆的圆心重合吧?

复制代码

代码如下:


var radial = ctx.createRadialGradient(55,55,10,55,55,55); //重合的圆心坐标
radial.addColorStop(0,'#fff');
radial.addColorStop(0.5,'#ff0');
radial.addColorStop(0.9,'#555');
radial.addColorStop(1,'#f00');


(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读