【HTML5】Canvas之globalCompositeOperation属性详解
globalCompositeOperation即Canvas中的合成操作。
1、source-over
这是默认值,他表示绘制的图形将画在现有画布之上
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
- <script type="text/javascript">
- $(document).ready(function(){
- var canvas=document.getElementById("myCanvas");
- var context=canvas.getContext("2d");
- context.fillStyle="rgb(63,169,245)";
- context.fillRect(50,50,100,100);
- context.globalCompositeOperation="source-over"
- context.fillStyle="rgb(255,123,172)";
- context.fillRect(100,100,100,100);
- });
- </script>
- </head>
- <body>
- <canvas id="myCanvas" width="1000px" height="1000px"></canvas>
- </body>
- </html>
2、destination-over
这个操作的值与前一个值相反,所以现在目标绘制在源之上
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
- <script type="text/javascript">
- $(document).ready(function(){
- var canvas=document.getElementById("myCanvas");
- var context=canvas.getContext("2d");
- context.fillStyle="rgb(63,169,245)";
- context.fillRect(50,50,100,100);
- context.globalCompositeOperation="destination-over"
- context.fillStyle="rgb(255,123,172)";
- context.fillRect(100,100,100,100);
- });
- </script>
- </head>
- <body>
- <canvas id="myCanvas" width="1000px" height="1000px"></canvas>
- </body>
- </html>
3、source-atop
这个操作会将源绘制在目标之上,但是在重叠区域上两者都是不透明的。绘制在其他位置的目标是不透明的,但源是透明的。
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
- <script type="text/javascript">
- $(document).ready(function(){
- var canvas=document.getElementById("myCanvas");
- var context=canvas.getContext("2d");
- context.fillStyle="rgb(63,169,245)";
- context.fillRect(50,50,100,100);
- context.globalCompositeOperation="source-atop"
- context.fillStyle="rgb(255,123,172)";
- context.fillRect(100,100,100,100);
- });
- </script>
- </head>
- <body>
- <canvas id="myCanvas" width="1000px" height="1000px"></canvas>
- </body>
- </html>
4、destination-atop
这个操作与source-atop相反,目标绘制在源之上
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
- <script type="text/javascript">
- $(document).ready(function(){
- var canvas=document.getElementById("myCanvas");
- var context=canvas.getContext("2d");
- context.fillStyle="rgb(63,169,245)";
- context.fillRect(50,50,100,100);
- context.globalCompositeOperation="destination-atop"
- context.fillStyle="rgb(255,123,172)";
- context.fillRect(100,100,100,100);
- });
- </script>
- </head>
- <body>
- <canvas id="myCanvas" width="1000px" height="1000px"></canvas>
- </body>
- </html>
5、source-in
在源于目标重叠的区域只绘制源,而不重叠的部分编程透明的。
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
- <script type="text/javascript">
- $(document).ready(function(){
- var canvas=document.getElementById("myCanvas");
- var context=canvas.getContext("2d");
- context.fillStyle="rgb(63,169,245)";
- context.fillRect(50,50,100,100);
- context.globalCompositeOperation="source-in"
- context.fillStyle="rgb(255,123,172)";
- context.fillRect(100,100,100,100);
- });
- </script>
- </head>
- <body>
- <canvas id="myCanvas" width="1000px" height="1000px"></canvas>
- </body>
- </html>
6、destination-in
这个操作与source-in相反,在源于目标重叠的区域保留目标。而不重叠的部分都变成透明的。
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
- <script type="text/javascript">
- $(document).ready(function(){
- var canvas=document.getElementById("myCanvas");
- var context=canvas.getContext("2d");
- context.fillStyle="rgb(63,169,245)";
- context.fillRect(50,50,100,100);
- context.globalCompositeOperation="destination-in"
- context.fillStyle="rgb(255,123,172)";
- context.fillRect(100,100,100,100);
- });
- </script>
- </head>
- <body>
- <canvas id="myCanvas" width="1000px" height="1000px"></canvas>
- </body>
- </html>
7、source-out
在与目标不重叠的区域上绘制源,其他部分都变成透明的。
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
- <script type="text/javascript">
- $(document).ready(function(){
- var canvas=document.getElementById("myCanvas");
- var context=canvas.getContext("2d");
- context.fillStyle="rgb(63,169,245)";
- context.fillRect(50,50,100,100);
- context.globalCompositeOperation="source-out"
- context.fillStyle="rgb(255,123,172)";
- context.fillRect(100,100,100,100);
- });
- </script>
- </head>
- <body>
- <canvas id="myCanvas" width="1000px" height="1000px"></canvas>
- </body>
- </html>
8、destination-out
在与源不重叠的区域上保留目标。其他部分都变成透明的。
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
- <script type="text/javascript">
- $(document).ready(function(){
- var canvas=document.getElementById("myCanvas");
- var context=canvas.getContext("2d");
- context.fillStyle="rgb(63,169,245)";
- context.fillRect(50,50,100,100);
- context.globalCompositeOperation="destination-out"
- context.fillStyle="rgb(255,123,172)";
- context.fillRect(100,100,100,100);
- });
- </script>
- </head>
- <body>
- <canvas id="myCanvas" width="1000px" height="1000px"></canvas>
- </body>
- </html>
9、lighter
这个值与顺序无关,如果源与目标重叠,就将两者的颜色值想家。得到的颜色值的最大取值为255,结果就为白色。
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
- <script type="text/javascript">
- $(document).ready(function(){
- var canvas=document.getElementById("myCanvas");
- var context=canvas.getContext("2d");
- context.fillStyle="rgb(63,169,245)";
- context.fillRect(50,50,100,100);
- context.globalCompositeOperation="lighter"
- context.fillStyle="rgb(255,123,172)";
- context.fillRect(100,100,100,100);
- });
- </script>
- </head>
- <body>
- <canvas id="myCanvas" width="1000px" height="1000px"></canvas>
- </body>
- </html>
10、copy
这个值与顺序无关,只绘制源,覆盖掉目标。
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
- <script type="text/javascript">
- $(document).ready(function(){
- var canvas=document.getElementById("myCanvas");
- var context=canvas.getContext("2d");
- context.fillStyle="rgb(63,169,245)";
- context.fillRect(50,50,100,100);
- context.globalCompositeOperation="copy"
- context.fillStyle="rgb(255,123,172)";
- context.fillRect(100,100,100,100);
- });
- </script>
- </head>
- <body>
- <canvas id="myCanvas" width="1000px" height="1000px"></canvas>
- </body>
- </html>
11、xor
这个值与顺序无关,只绘制出不重叠的源与目标区域。所有重叠的部分都变成透明的
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
- <script type="text/javascript">
- $(document).ready(function(){
- var canvas=document.getElementById("myCanvas");
- var context=canvas.getContext("2d");
- context.fillStyle="rgb(63,169,245)";
- context.fillRect(50,50,100,100);
- context.globalCompositeOperation="xor"
- context.fillStyle="rgb(255,123,172)";
- context.fillRect(100,100,100,100);
- });
- </script>
- </head>
- <body>
- <canvas id="myCanvas" width="1000px" height="1000px"></canvas>
- </body>
- </html>
【HTML5】Canvas之globalCompositeOperation属性详解的更多相关文章
- [js高手之路] html5 canvas系列教程 - 状态详解(save与restore)
本文内容与路径([js高手之路] html5 canvas系列教程 - 开始路径beginPath与关闭路径closePath详解)是canvas中比较重要的概念.掌握理解他们是做出复杂canvas动 ...
- html5 Canvas绘制图形入门详解
html5,这个应该就不需要多作介绍了,只要是开发人员应该都不会陌生.html5是「新兴」的网页技术标准,目前,除IE8及其以下版本的IE浏览器之外,几乎所有主流浏览器(FireFox.Chrome. ...
- HTML5 Canvas绚丽的小球详解
实例说明: 实例使用HTML5+CSS+JavaScript实现小球的运动效果 掌握Canvas的基本用法 技术要点: 从需求出发 分析Demo要实现的功能 擅于使用HTML5 Canvas 参考手册 ...
- HTML重要标签及属性详解
我学习前端的时间不长,短短1个月而已,只学了些HTML5和CSS3还有少许javascript,另外还有网页布局等等辅助性书籍,我在模仿网页以及完成百度前端技术学院的任务过程中发现了我容易忘记的标签以 ...
- android:exported 属性详解
属性详解 标签: android 2015-06-11 17:47 27940人阅读 评论(7) 收藏 举报 分类: Android(95) 项目点滴(25) 昨天在用360扫描应用漏洞时,扫描结果, ...
- OutputCache属性详解(一)一Duration、VaryByParam
目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...
- OutputCache属性详解(二)一 Location
目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...
- OutputCache属性详解(三)— VaryByHeader,VaryByCustom
目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...
- OutputCache属性详解(四)— SqlDependency
目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...
随机推荐
- OpenJudge 2694 逆波兰表达式
1.链接地址: http://bailian.openjudge.cn/practice/2694/ 2.题目: 总时间限制: 1000ms 内存限制: 65536kB 描述 逆波兰表达式是一种把运算 ...
- 阿里云ECS服务器被DDoS无解,请问我该何去何从?
阿里云ECS服务器被DDoS无解,请问我该何去何从?
- android驱动程序之 - sensor
上图是android系统架构图,从中可以得知,sensor必贯穿架构的各个层次.按照架构层次,下面从五个方面来分析sensor架构: 1. sensor架构之App层: 2. sensor架构之Fra ...
- C++字符串函数与C字符串函数比较
赋值拷贝: #include <iostream> #include <string> using namespace std; void main(){ string a=& ...
- linux共享文件samba安装与java读取外部文件夹方法
测试环境RedHat 6.4 一.安装 samba组件安装: (1)首先用“rpm –qa |grep samba”命令检验系统samba服务是否安装. #rpm –qa |grep samba sa ...
- 重力加速度陀螺仪传感器MPU-6050(一)
MPU-60X0 对陀螺仪和加速度计分别用了三个16 位的ADC,将其测量的模拟量转化 为可输出的数字量.为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的,陀螺仪可测范围为±250,±50 ...
- DataGridView默认不选中
NurseGridList.CurrentCell = null; NurseGridList.ClearSelection(); Nurs ...
- [PHP]htmlentities() 函数
定义和用法 htmlentities() 函数把字符转换为 HTML 实体. 语法 htmlentities(string,quotestyle,character-set) 参数 描述 string ...
- 干货:Web应用上线之前程序员应该了解的技术细节
[伯乐在线注]:<Web 应用上线前,程序员应考虑哪些技术细节呢?>这是 StackExchange 上面的一个经典问题贴. 最赞回复有 2200+ 顶,虽然大多数人可能都听过其中大部分内 ...
- c++二分答案 之 跳石头
题目: 题目描述 Description 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之 ...