canvas createPattern()方法詳解
阿新 • • 發佈:2018-12-06
createPattern作用
createPattern() 方法在指定的方向內重複指定的元素。
元素可以是圖片、視訊,或者其他 <canvas> 元素。
被重複的元素可用於繪製/填充矩形、圓形或線條等等。
網站http://www.w3school.com.cn/tags/canvas_createpattern.asp中基本介紹
語法:
context.createPattern(image,"repeat|repeat-x|repeat-y|no-repeat");
createPattern引數值
引數 | 描述 |
---|---|
image |
規定要使用的圖片、畫布或視訊元素。 |
repeat | 預設。該模式在水平和垂直方向重複。 |
repeat-x | 該模式只在水平方向重複。 |
repeat-y | 該模式只在垂直方向重複。 |
no-repeat | 該模式只顯示一次(不重複)。 |
createPattern用法舉例
1)使用圖片填充
使用到的圖片:
repeat的幾種方式,大家可以在jsfiddle上修改程式碼執行看看效果。
也許你覺得這個圖示太大了,想讓它變得更小更密,所以想改變image的寬高是否能實現這個效果呢?事實是不能,canvas只會將按照原圖大小填充。那怎麼解決這個問題呢?
這就用到了下面使用canvas填充的方式
2)使用canvas填充
建立一個臨時的canvas,用canvas 的drawImg()方法,對圖片進行縮放,然後在再把canvas 傳到createPattern裡面。以此達到createPattern縮放內容的效果。
3)使用視訊填充
和圖片填充類似,只需要在createpattern使用video標籤即可,但是你也會發現繪製的重複內容只是視訊的第一幀內容
1 var c = document.getElementById("canvas"); 2 varctx = c.getContext("2d"); 3 var video = document.createElement("video") 4 video.src = "https://dl.xueleyun.com/files/mp4_3e100520985a66003c1b9a104fd36143.mp4" 5 video.onloadeddata = function () { 6 var pat = ctx.createPattern(video, "repeat"); 7 ctx.rect(60, 10, c.width - 20, c.height - 20); 8 ctx.fillStyle = pat; 9 ctx.fill(); 10 }
填充位置
另外需要注意的是,在第一個程式碼例項中,如果我們將矩形的起始座標x調整下,渲染出來的效果如下圖所示。
通過這個效果你應該能清楚,填充的起始位置是畫布的原點,並不是要填充圖形rect的起始位置。
應用例項
刮塗層贏大獎
前面我們的例項中都是用createpattern填充矩形,如果是填充畫線stroke的話也是可以的,下面簡單實現一個刮塗層的示例,結合滑鼠拖拽繪製線條的程式碼,效果如下: