亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HTML5 利用Canvas API 組合圖形

發布時間:2020-05-29 17:37:24 來源:網絡 閱讀:2160 作者:charles_wang888 欄目:移動開發

 在HTML5中有11種組合圖形的方式,只要把他們設置到context.globalCompositeOperation中就可以了,我這里做了一個小例子來證明各種圖形組合方式的結果

HTML代碼很簡單,就2個控件,一個是下拉列表,讓用戶選擇組合方式,并且一旦用戶做出了選擇,就執行js函數draw(id),從而在第二個控件canvas上根據用戶當前選擇的組合方式進行畫圖。第二個控件就是一個canvas,用于顯示畫圖的內容。

  1. <!DOCTYPE html> 
  2. <head> 
  3. <meta charset="UTF-8"> 
  4. <title>HTML5 Combine Shape DEMO</title> 
  5. <script type="text/javascript" src="js/drawCombinedShape.js"></script> 
  6. </head> 
  7.  
  8. <body></body> 
  9. <h3>canvas:顯示組合圖形</h3> 
  10.  
  11. <!-- 創建一個下拉列表來讓用戶選擇按照什么方式來組合圖形 --> 
  12. <!-- 一旦用戶做出了選擇,就會觸發onchange處理函數,于是調用js函數,讓其在canvas組件上畫圖 --> 
  13. <select id="selectCombineMethod" onchange="draw('canvas')"> 
  14. <option >source-atop</option> 
  15. <option>source-in</option> 
  16. <option>source-out</option> 
  17. <option>source-over</option> 
  18. <option>destination-atop</option> 
  19. <option>destination-in</option> 
  20. <option>destination-out</option> 
  21. <option>destination-over</option> 
  22. <option>lighter</option> 
  23. <option>copy</option> 
  24. <option>xor</option> 
  25. </select> 
  26. <br><br> 
  27.  
  28. <!-- 指定一個canvas元素用于顯示結果 --> 
  29. <canvas id="canvas" width="1000” height="1000"/> 
  30. <br><br> 

js函數就是負責響應下拉列表的onchange事件從而在canvas上畫圖,它先繪制原圖形(distination,在這里是一個藍色正方形),然后取得用戶選擇的組合方式,再根據此方式畫出新圖形(source,在這里是一個紅色的圓):

  1. /** 
  2.  *  This file is confidential by Charles.Wang 
  3.  *  Copyright belongs to Charles.wang 
  4.  *  You can make contact with Charles.Wang (charles_wang888@126.com) 
  5.  */ 
  6.   
  7.   
  8.  function draw(id){ 
  9.      
  10.     //得到用戶選擇的圖形組合選項: 
  11.     var selectComponent=document.getElementById("selectCombineMethod"); 
  12.     //取得用戶的選擇的索引 
  13.     var selectedIndex =selectComponent.selectedIndex; 
  14.     //得到用戶的選擇的值,也就是選擇的圖形組合策略 
  15.     var selectedCombinedStrategy = selectComponent.options[selectedIndex].value; 
  16.      
  17.     //得到頁面上的畫布對象 
  18.     var canvas=document.getElementById(id); 
  19.     if(canvas ==null
  20.     return false
  21.      
  22.     var context = canvas.getContext('2d'); 
  23.     //畫原來的圖形,藍色正方形 
  24.     context.fillStyle="blue"
  25.     context.fillRect(40,40,60,60); 
  26.      
  27.     //將用戶選擇的圖形組合方式設定到context中 
  28.     context.globalCompositeOperation=selectedCombinedStrategy; 
  29.      
  30.     //畫新圖形,是一個紅色的圓 
  31.     //這時候,context會根據圖形的組合策略來決定如何繪制這2個圖形 
  32.     context.beginPath(); 
  33.     context.fillStyle="red"
  34.     context.arc(40+60,40+60,30,0,Math.PI*2,false); 
  35.     context.fill(); 
  36.      
  37.    
  38.      
  39.      
  40.  } 

 

實驗可以根據你用戶的選擇來顯示不同結果:

這里的source是紅色的圓(新圖形),distination是藍色正方形(舊圖形)

 

  • source-atop=新圖形中(新 and 老)+老圖形中(!(新 and 老))

HTML5 利用Canvas API 組合圖形

 

  • source-in=新圖形中(新 and 老)

HTML5 利用Canvas API 組合圖形

 

  • source-out=新圖形中(!(新 and 老))

HTML5 利用Canvas API 組合圖形

 

  • source-over(默認值)=老圖形中(!(新 and 老))+新圖形中(全部)

HTML5 利用Canvas API 組合圖形

 

  • destination-atop=老圖形中(新 and 老)+新圖形中(!(新 and 老))

HTML5 利用Canvas API 組合圖形

 

  • destination-in=老圖形中(新 and 老)

HTML5 利用Canvas API 組合圖形

 

  • destination-out=老圖形中(!(新 and 老))

HTML5 利用Canvas API 組合圖形

 

  • destination-over=老圖形中(全部)+新圖形中(!(新 and 老))

HTML5 利用Canvas API 組合圖形

 

  • lighter=老圖形中(!(新 and 老))+ 新圖形中(!(新 and 老))+新 and 老(色彩疊加) 

HTML5 利用Canvas API 組合圖形

 

  • copy=新圖形中(全部)

HTML5 利用Canvas API 組合圖形

 

  • xor(對稱差)=老圖形中(!(新 and 老))+新圖形中(!(新 and 老))

HTML5 利用Canvas API 組合圖形

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金塔县| 泽州县| 夏河县| 定兴县| 普洱| 蓬溪县| 信丰县| 平陆县| 中西区| 平阴县| 白山市| 林周县| 武城县| 石泉县| 鹤峰县| 财经| 云梦县| 平谷区| 兴安盟| 闽侯县| 都匀市| 新竹市| 中阳县| 农安县| 金门县| 庄河市| 霍邱县| 金山区| 东乌珠穆沁旗| 绵阳市| 仁布县| 浏阳市| 盐山县| 新竹县| 星子县| 旌德县| 徐水县| 资中县| 突泉县| 安西县| 黑河市|