canvas globalCompositeOperation
2016-06-21 16:01
513 查看
globalCompositeOperation 可以在已有图形后面再画新图形,还可以用来遮盖,清除(比 clearRect 方法强劲得多)某些区域。
使用:globalCompositeOperation = type;
效果图如下:
不知为什么,source-in、source-atop 效果没出来
不知为什么,destination-in、destination-out 效果没出来
参考:https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API/Tutorial/Compositing
使用:globalCompositeOperation = type;
效果图如下:
不知为什么,source-in、source-atop 效果没出来
不知为什么,destination-in、destination-out 效果没出来
<!--图片的源码为--> <body> <div> <ul> <li>source-over:默认设置,新图形会覆盖在原有内容之上。</li> <li>source-in:新图形会仅仅出现与原有内容重叠的部分。其它区域都变成透明的。</li> <li>source-out:结果是只有新图形中与原有内容不重叠的部分会被绘制出来。</li> <li>source-atop:新图形中与原有内容重叠的部分会被绘制,并覆盖于原有内容之上。</li> </ul> <canvas id="canvas1" width=160 height=160></canvas> <canvas id="canvas2" width=160 height=160></canvas> <canvas id="canvas3" width=160 height=160></canvas> <canvas id="canvas4" width=160 height=160></canvas> </div> <div> <ul> <li>destination-over:会在原有内容之下绘制新图形。</li> <li>destination-in:原有内容中与新图形重叠的部分会被保留,其它区域都变成透明的。</li> <li>destination-out:原有内容中与新图形不重叠的部分会被保留。</li> <li>destination-atop:原有内容中与新内容重叠的部分会被保留,并会在原有内容之下绘制新图形。</li> </ul> <canvas id="canvas5" width=160 height=160></canvas> <canvas id="canvas6" width=160 height=160></canvas> <canvas id="canvas7" width=160 height=160></canvas> <canvas id="canvas8" width=160 height=160></canvas> </div> <div> <ul> <li>lighter:两图形中重叠部分作加色处理。</li> <li>darker:两图形中重叠的部分作减色处理。</li> <li>xor:重叠的部分会变成透明。</li> <li>copy:只有新图形会被保留,其它都被清除掉。</li> </ul> <canvas id="canvas9" width=160 height=160></canvas> <canvas id="canvas10" width=160 height=160></canvas> <canvas id="canvas11" width=160 height=160></canvas> <canvas id="canvas12" width=160 height=160></canvas> </div> <script type="text/javascript"> draw(1, "source-over"); draw(2, "source-in"); draw(3, "source-out"); draw(4, "source-atop"); draw(5, "destination-over"); draw(6, "destination-in"); draw(7, "destination-out"); draw(8, "destination-atop"); draw(9, "lighter"); draw(10, "darker"); draw(11, "xor"); draw(12, "copy"); function draw(id, globalCompositeOperation) { var canvas = "canvas" + id;console.log(canvas); var ctx = document.getElementById(canvas).getContext("2d"); ctx.globalCompositeOperation = globalCompositeOperation; ctx.fillStyle = "#0000ff"; ctx.fillRect(0, 0, 100, 100); ctx.fillStyle = "#ff0000"; ctx.fillRect(40, 40, 100, 100); } </script> </body>
参考:https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API/Tutorial/Compositing
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- HTML5调用摄像头实例
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子