HTML5 利用Canvas API 组合图形
admin
2023-06-11 23:01:47
0次

 在HTML5中有11种组合图形的方式,只要把他们设置到context.globalCompositeOperation中就可以了,我这里做了一个小例子来证明各种图形组合方式的结果

HTML代码很简单,就2个控件,一个是下拉列表,让用户选择组合方式,并且一旦用户做出了选择,就执行js函数draw(id),从而在第二个控件canvas上根据用户当前选择的组合方式进行画图。第二个控件就是一个canvas,用于显示画图的内容。

  1. > 
  2. <head> 
  3. <meta charset="UTF-8"> 
  4. <title>HTML5 Combine Shape DEMOtitle> 
  5. <script type="text/javascript" src="js/drawCombinedShape.js">script> 
  6. head> 
  7.  
  8. <body>body> 
  9. <h3>canvas:显示组合图形h3> 
  10.  
  11.  
  12.  
  13. <select id="selectCombineMethod" onchange="draw('canvas')"> 
  14. <option >source-atopoption> 
  15. <option>source-inoption> 
  16. <option>source-outoption> 
  17. <option>source-overoption> 
  18. <option>destination-atopoption> 
  19. <option>destination-inoption> 
  20. <option>destination-outoption> 
  21. <option>destination-overoption> 
  22. <option>lighteroption> 
  23. <option>copyoption> 
  24. <option>xoroption> 
  25. select> 
  26. <br><br> 
  27.  
  28.  
  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 组合图形

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...