麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > HTML > 正文

Canvas globalCompositeOperation

2024-08-26 00:21:12
字體:
來源:轉載
供稿:網(wǎng)友

在默認情況之下,如果在Canvas之中將某個物體(源)繪制在另一個物體(目標)之上,那么瀏覽器就會簡單地把源特體的圖像疊放在目標物體圖像上面。

Canvas,globalCompositeOperation

簡單點講,在Canvas中,把圖像源和目標圖像,通過Canvas中的 globalCompositeOperation 操作,可以得到不同的效果,比如下圖:

Canvas,globalCompositeOperation

正如上圖,紅蘋果和黑色的圓,通過 globalCompositeOperation 的 destination-out 就變成了被咬了一口的紅蘋果。也就是說,在Canvas中通過圖像的合成,我們可以實現(xiàn)一些與眾不同的效果,比如我們要制作一個刮刮卡抽獎的效果。 今天我們就來了解Canvas中的圖像合成怎么使用。

圖像合成 globalCompositeOperation 類型

在Canvas中 globalCompositeOperation 屬性的值總共有 26 種類型,每種類型都將前生不一樣的效果,當然你可能看到效果都將不樣,甚至有一些效果在瀏覽器中并不能正常的渲染。不過不要緊,我們簡單的了解這26種類型其代表的含意以及產(chǎn)生的效果。

ctx.save(); ctx.translate(w / 2, h / 2);ctx.fillStyle = 'red'; ctx.beginPath(); ctx.arc(-40, 20, 80, 0, Math.PI * 2, true); ctx.closePath(); ctx.fill();

上面的代碼將在Canvas畫布上繪制一個半徑為 80px 的紅色圓形,在這里把它稱為圖像源。

 ctx.fillStyle = 'orange';  ctx.beginPath(); ctx.arc(40, 20, 80, 0, Math.PI * 2, true);  ctx.closePath();  ctx.fill(); ctx.restore();

這段代碼將在Canvas畫布上繪制一個半徑為 80px 的橙色圓形,在這里把它稱為圖像目標。在圖像源和目標圖像之間設置 globalCompositeOperation 的值,就可以完成圖像的合成操作:

ctx.save(); ctx.translate(w / 2, h / 2); ctx.fillStyle = 'red'; ctx.beginPath(); ctx.arc(-40, 20, 80, 0, Math.PI * 2, true); ctx.closePath(); ctx.fill(); ctx.globalCompositeOperation = 'source-in'; ctx.fillStyle = 'orange'; ctx.beginPath(); ctx.arc(40, 20, 80, 0, Math.PI * 2, true); ctx.closePath(); ctx.fill(); ctx.restore();

此時得到的效果如下:

Canvas,globalCompositeOperation

source-over

source-over 是 globalCompositeOperation 屬性的默認值。源圖形覆蓋目標圖形,源圖形不透明的地方顯示源圖形,其余顯示目標圖形

Canvas,globalCompositeOperation

source-in

source-in :目標圖形和源圖形重疊且都不透明的部分才被繪制

Canvas,globalCompositeOperation

source-out

source-out :目標圖形和源圖形不重疊的部分會被繪制

Canvas,globalCompositeOperation

source-atop

source-atop :目標圖形和源圖形內(nèi)容重疊的部分的目標圖形會被繪制

Canvas,globalCompositeOperation

destination-over

destination-over :目標圖形和源圖形內(nèi)容后面的目標圖形會被繪制

Canvas,globalCompositeOperation

destination-in

destination-in :目標圖形和源圖形重疊的部分會被保留(源圖形),其余顯示為透明

Canvas,globalCompositeOperation

其它的就不一一展示了。具體每個值對應的描述,可以點擊這里查閱 。

結合globalAlpha控制圖像合成操作

在Canvas中有兩個屬性 globalAlpha 和 globalCompositeOperation 來控制圖像合成操作:

  • globalAlpha :設置圖像的透明度。 globalAlpha 屬性默認值為 1 ,表示完全不透明,并且可以設置從 0(完全透明)到 1 (完全不透明)。這個值必須設置在圖形繪制之前
  • globalCompositeOperation :該屬性的值在 globalAlpha 以及所有變換都生效后控制在當前Canvas位圖中繪制圖形

合成圖像的應用示例

在平時的業(yè)務中,我們常常能看到刮刮卡這樣的抽獎效果。如果我們使用Canvas來做,就會用到Canvas圖像的合成。

<div id="card"> <canvas id="canvasOne" width="500" height="300"></canvas> </div>

我們把獎品(如果是一個圖像)當作 div#card 的背景展示。然后在Canvas中先繪制一個灰色的矩形(源圖像),再通過鼠標事件(或觸摸事件)來動態(tài)繪制新圖像(這個就類似筆刷),把 globalCompositeOperation 屬性的值設置為 destination-out (新繪制的圖形和目標canvas中已經(jīng)存在的圖形內(nèi)容不重疊的部分的會被保留)。當筆刷擦除大于一定的比例的時候,就刪除 <canvas> 元素或者使用 clearRect() 清除Canvas畫布。從而展示出 div 背景

這篇文章我們主要介紹了Canvas的圖像合成,在Canvas中可以通過兩個屬性globalAlpha和globalCompositeOperation來控制圖像合成操作,實現(xiàn)圖像合成效果。希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關教程知識閱讀請移步到HTML教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 免费一级片观看 | 麻豆传传媒久久久爱 | 99精品视频在线免费观看 | av在线免费观看播放 | 亚洲人成综合第一网 | 噜噜噜在线 | 最近免费观看高清韩国日本大全 | 日韩午夜一区二区三区 | 精品亚洲一区二区三区 | 成年人黄色免费网站 | 久久综合综合 | 久久久一区二区三区精品 | 黄污免费网站 | 免费永久在线观看黄网 | 一本色道久久综合狠狠躁篇适合什么人看 | 青热久思思 | 黄色电影免费网址 | 99精品视频在线观看免费播放 | 美女黄页网站免费进入 | 色中色激情影院 | 欧美日韩中文字幕在线 | av免费在线观看免费 | 久久精品一二三区白丝高潮 | 久久精品中文字幕一区 | 蜜桃精品视频 | 国产免费网站视频 | 天天色综合6 | 国产精品高清一区 | 黄色网址在线播放 | 欧美城网站地址 | av在线等 | 羞羞网站视频 | 中文字幕www | 久久久成人免费视频 | 成人免费网站在线观看 | 国产精品7区 | 亚洲一级电影在线观看 | 欧美a黄| 国产羞羞视频在线观看免费应用 | 亚洲免费视频一区 | 涩涩屋av |