canvas教程

渐变终点html5 Canvas画图4:填充和渐变

字号+ 作者:H5之家 来源:H5之家 2017-06-27 08:03 我要评论( )

PS:今天上午,非常郁闷,有很多单简基础的题问弄得我有些迷茫,哎,码代几天不写就忘。目前又不当COO,还是得用心记码代哦! 一般绘图的方法有两种,即充填和描边,后面的文章已讲了描边的方法stroke,本文就讲一下Canvas中充填图形的方法。 充填即fill(),很

PS:今天上午,非常郁闷,有很多单简基础的题问弄得我有些迷茫,哎,码代几天不写就忘。目前又不当COO,还是得用心记码代哦!

    一般绘图的方法有两种,即充填和描边,后面的文章已讲了描边的方法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里头的径向渐变竟然弄的不一样了,出发点一个圆,终点一个圆,和我的解理有差距。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 基于HTML5 Canvas粒子效果文字动画特效

    基于HTML5 Canvas粒子效果文字动画特效

    2017-06-23 08:02

  • HTML5 Canvas字母文字颗粒动画 可设置重力感应

    HTML5 Canvas字母文字颗粒动画 可设置重力感应

    2017-06-22 14:01

  • HTML5精粹:利用HTML5开发令人惊奇的Web站点和革命性应用

    HTML5精粹:利用HTML5开发令人惊奇的Web站点和革命性应用

    2017-06-21 13:04

  • HTML5 Canvas实现平移/放缩/旋转deom示例(附截图)

    HTML5 Canvas实现平移/放缩/旋转deom示例(附截图)

    2017-06-21 12:04

网友点评
}