在HTML5中有11種組合圖形的方式,只要把他們?cè)O(shè)置到context.globalCompositeOperation中就可以了,我這里做了一個(gè)小例子來(lái)證明各種圖形組合方式的結(jié)果
在魚(yú)臺(tái)等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供成都網(wǎng)站建設(shè)、做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需定制,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,全網(wǎng)整合營(yíng)銷(xiāo)推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,魚(yú)臺(tái)網(wǎng)站建設(shè)費(fèi)用合理。
HTML代碼很簡(jiǎn)單,就2個(gè)控件,一個(gè)是下拉列表,讓用戶(hù)選擇組合方式,并且一旦用戶(hù)做出了選擇,就執(zhí)行js函數(shù)draw(id),從而在第二個(gè)控件canvas上根據(jù)用戶(hù)當(dāng)前選擇的組合方式進(jìn)行畫(huà)圖。第二個(gè)控件就是一個(gè)canvas,用于顯示畫(huà)圖的內(nèi)容。
- <!DOCTYPE html>
- <head>
- <meta charset="UTF-8">
- <title>HTML5 Combine Shape DEMO</title>
- <script type="text/javascript" src="js/drawCombinedShape.js"></script>
- </head>
- <body></body>
- <h3>canvas:顯示組合圖形</h3>
- <!-- 創(chuàng)建一個(gè)下拉列表來(lái)讓用戶(hù)選擇按照什么方式來(lái)組合圖形 -->
- <!-- 一旦用戶(hù)做出了選擇,就會(huì)觸發(fā)onchange處理函數(shù),于是調(diào)用js函數(shù),讓其在canvas組件上畫(huà)圖 -->
- <select id="selectCombineMethod" onchange="draw('canvas')">
- <option >source-atop</option>
- <option>source-in</option>
- <option>source-out</option>
- <option>source-over</option>
- <option>destination-atop</option>
- <option>destination-in</option>
- <option>destination-out</option>
- <option>destination-over</option>
- <option>lighter</option>
- <option>copy</option>
- <option>xor</option>
- </select>
- <br><br>
- <!-- 指定一個(gè)canvas元素用于顯示結(jié)果 -->
- <canvas id="canvas" width="1000” height="1000"/>
- <br><br>
js函數(shù)就是負(fù)責(zé)響應(yīng)下拉列表的onchange事件從而在canvas上畫(huà)圖,它先繪制原圖形(distination,在這里是一個(gè)藍(lán)色正方形),然后取得用戶(hù)選擇的組合方式,再根據(jù)此方式畫(huà)出新圖形(source,在這里是一個(gè)紅色的圓):
- /**
- * This file is confidential by Charles.Wang
- * Copyright belongs to Charles.wang
- * You can make contact with Charles.Wang (charles_wang888@126.com)
- */
- function draw(id){
- //得到用戶(hù)選擇的圖形組合選項(xiàng):
- var selectComponent=document.getElementById("selectCombineMethod");
- //取得用戶(hù)的選擇的索引
- var selectedIndex =selectComponent.selectedIndex;
- //得到用戶(hù)的選擇的值,也就是選擇的圖形組合策略
- var selectedCombinedStrategy = selectComponent.options[selectedIndex].value;
- //得到頁(yè)面上的畫(huà)布對(duì)象
- var canvas=document.getElementById(id);
- if(canvas ==null)
- return false;
- var context = canvas.getContext('2d');
- //畫(huà)原來(lái)的圖形,藍(lán)色正方形
- context.fillStyle="blue";
- context.fillRect(40,40,60,60);
- //將用戶(hù)選擇的圖形組合方式設(shè)定到context中
- context.globalCompositeOperation=selectedCombinedStrategy;
- //畫(huà)新圖形,是一個(gè)紅色的圓
- //這時(shí)候,context會(huì)根據(jù)圖形的組合策略來(lái)決定如何繪制這2個(gè)圖形
- context.beginPath();
- context.fillStyle="red";
- context.arc(40+60,40+60,30,0,Math.PI*2,false);
- context.fill();
- }
實(shí)驗(yàn)可以根據(jù)你用戶(hù)的選擇來(lái)顯示不同結(jié)果:
這里的source是紅色的圓(新圖形),distination是藍(lán)色正方形(舊圖形)
當(dāng)前名稱(chēng):HTML5利用CanvasAPI組合圖形
鏈接分享:http://jinyejixie.com/article4/poshoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站收錄、手機(jī)網(wǎng)站建設(shè)、軟件開(kāi)發(fā)、定制網(wǎng)站、App開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)