canvas createPattern()方法详解

 

createPattern作用

createPattern() 方法在指定的方向内重复指定的元素。

元素可以是图片、视频,或者其他 <canvas> 元素。

被重复的元素可用于绘制/填充矩形、圆形或线条等等。

网站upload/201812071541233320.png" alt="" style="border: 0px; max-width: 900px; height: auto; margin: 10px;" /> 

 

repeat的几种方式,大家可以在jsfiddle上修改代码运行看看效果。

也许你觉得这个图标太大了,想让它变得更小更密,所以想改变image的宽高是否能实现这个效果呢?事实是不能,canvas只会将按照原图大小填充。那怎么解决这个问题呢?

这就用到了下面使用canvas填充的方式

2)使用canvas填充

创建一个临时的canvas,用canvas 的drawImg()方法,对图片进行缩放,然后在再把canvas 传到createPattern里面。以此达到createPattern缩放内容的效果。

 

3)使用视频填充

和图片填充类似,只需要在createpattern使用video标签即可,但是你也会发现绘制的重复内容只是视频的第一帧内容

复制代码
 1         var c = document.getElementById("canvas");  2         var ctx = c.getContext("2d");  3         var video = document.createElement("video")  4         video.src = "upload/201812071541237161.gif" alt="复制代码" style="max-width: 900px; height: auto; border: none !important;" />

 

填充位置

另外需要注意的是,在第一个代码实例中,如果我们将矩形的起始坐标x调整下,渲染出来的效果如下图所示。

通过这个效果你应该能清楚,填充的起始位置是画布的原点,并不是要填充图形rect的起始位置。

 

应用实例

刮涂层赢大奖

前面我们的实例中都是用createpattern填充矩形,如果是填充画线stroke的话也是可以的,下面简单实现一个刮涂层的示例,结合鼠标拖拽绘制线条的代码,效果如下:

 

 

 

 

 

 
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信