如下代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><canvas id="canvas" style="border: 1px solid #aaa; display: block; margin: 50px auto;">当前浏览器不支持canvas
</canvas><script>window.onload = function(){let canvas = document.getElementById("canvas");canvas.width = 800;canvas.height = 800;let context = canvas.getContext("2d");for(let i = 0; i < 100; i++){let R = Math.floor(Math.random() * 255);let G = Math.floor(Math.random() * 255);let B = Math.floor(Math.random() * 255);context.fillStyle = "rgb(" + R + "," + G + "," + B + ")";context.beginPath();context.arc(Math.random() * canvas.width, Math.random() * canvas.height, Math.random() * 100, 0, 2 * Math.PI);context.fill();}}</script></body>
</html>

程序运行截图如下:

修改脚本添加globalAlpha属性后,代码如下:

<script>window.onload = function(){let canvas = document.getElementById("canvas");canvas.width = 800;canvas.height = 800;let context = canvas.getContext("2d");context.globalAlpha = 0.5;for(let i = 0; i < 100; i++){let R = Math.floor(Math.random() * 255);let G = Math.floor(Math.random() * 255);let B = Math.floor(Math.random() * 255);context.fillStyle = "rgb(" + R + "," + G + "," + B + ")";context.beginPath();context.arc(Math.random() * canvas.width, Math.random() * canvas.height, Math.random() * 100, 0, 2 * Math.PI);context.fill();}}</script>

程序运行截图如下:

globalAlpha会将所有元素的透明的进行更改。

下一个是globalCompositeOperation顾名思义就是整体图形复合时的操作,保证哪个在上面,哪个在下面,哪个需要裁剪,哪个要隐藏等等。

其属性值如下:

描述
source-over 默认。在目标图像上显示源图像
source-atop 目标图像顶部显示源图像源图像位于目标图像之外的部分是不可见的。
source-in 目标图像中显示源图像。只有目标图像之内的源图像部分会显示,目标图像是透明的。
source-out 目标图像之外显示源图像。只有目标图像之外的源图像部分会显示,目标图像是透明的。
destination-over 源图像上显示目标图像
destination-atop 源图像顶部显示目标图像目标图像位于源图像之外的部分是不可见的。
destination-in 源图像中显示目标图像。只有源图像之内的目标图像部分会被显示,源图像是透明的。
destination-out 源图像之外显示目标图像。只有源图像之外的目标图像部分会被显示,源图像是透明的。
lighter 显示源图像 + 目标图像
copy 显示源图像。忽略目标图像
xor 使用异或操作对源图像目标图像进行组合

所有属性值对应的效果图是这样的。

下面来一个简单的小栗子

程序运行截图如下:

源码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><canvas id="canvas" style="border: 1px solid #aaa; display: block; margin: 50px auto;">当前浏览器不支持canvas
</canvas><script>window.onload = function(){let canvas = document.getElementById("canvas");canvas.width = 800;canvas.height = 800;let context = canvas.getContext("2d");context.globalCompositeOperation = "source-over";context.fillStyle = "red";context.fillRect(20, 20, 75, 50);context.fillStyle = "blue";context.fillRect(50, 50, 75, 50);context.globalCompositeOperation = "destination-over";context.fillStyle = "red";context.fillRect(150, 20, 75, 50);context.fillStyle = "blue";context.fillRect(180, 50, 75, 50);}</script></body>
</html>

canvas笔记-globalAlpha和globaleCompositeOperation的使用相关推荐

  1. html5 canvas修改颜色,html5 canvas 笔记二(添加样式和颜色)

    色彩 Colors fillStyle = color设置图形的填充颜色.strokeStyle = color设置图形轮廓的颜色. 透明度 Transparency globalAlpha = tr ...

  2. html5菜鸟教程canvas笔记

    简单介绍: canvas(图形容器) 标签是一个默认没有边框和内容的矩形画布,并且通过js实现绘制,js脚本先获取标签的id然后进行控制canvas,比如:1. <canvas id=" ...

  3. html语言填充没有只有描边,HTML5 Canvas笔记——交互绘制文本(描边、填充、阴影、渐变填充、图案填充、文本的属性设置)...

    (1)文本的描边.填充.阴影 (2)文本的渐变填充 (3)文本的图案填充 (4)文本的属性设置及效果呈现 交互绘制文本.html 交互绘制文本 body { background: #eeeeee; ...

  4. html5 canvas 笔记五(合成与裁剪)

    组合 Compositing globalCompositeOperation syntax: globalCompositeOperation = type 注意:下面所有例子中,蓝色方块是先绘制的 ...

  5. canvas笔记-画三角形并计算其外心(含算法其他绘图框架类似)

    程序运行截图如下: 源码如下: <!DOCTYPE html> <html lang="en"> <head><meta charset= ...

  6. canvas笔记-文本(fillText)旋转(rotate)

    这里fillText直接使用rotate会有问题.估计是旋转中心有问题. 正确的逻辑为: 先使用translate移动中心点在文本起始位置,如何在0,0处fillText即可. 如果要在字符串中心进行 ...

  7. canvas笔记-canvas加载图片及放缩及加水印(两canvas同时使用)

    首先是图片放缩 程序运行截图如下: 拉动滑动条: 源码如下: <!DOCTYPE html> <html lang="en"> <head>&l ...

  8. canvas笔记-canvas中用户与图形交互

    运行截图如下: 点击某个圆后: 代码如下: <!DOCTYPE html> <html lang="en"> <head><meta ch ...

  9. canvas笔记-扩展canvas的context及画椭圆及浏览器兼容问题

    首先是扩展canvas的context 比如扩展一个画五角星的代码 <!DOCTYPE html> <html lang="en"> <head> ...

最新文章

  1. DeepMind开源AlphaFold,蛋白质预测模型登上《Nature》
  2. Linux文本比较命令:diff
  3. linux permit用法,技术|12 条实用的 zypper 命令范例
  4. 更改UISearchBar button属性
  5. 神经网络与深度学习——TensorFlow2.0实战(笔记)(五)(Matplotlib绘图基础<1>python)
  6. java实体类 判断 字段_java8 根据实体类中的某个字段对实体类去重
  7. Cesium入门-1-展示一个地球
  8. 拥有自我意识、自我模拟的粒子机器人来了
  9. 分治法(divide conquer algorithm)的理解
  10. 解决navicat在未联网的情况下访问不了MySQL数据库的现象
  11. 【Zookeeper】源码分析之Watcher机制(一)
  12. 2021年王道考研计算机408【新课】
  13. php给数据库添加记录,数据表操作之添加数据表记录
  14. office 2016 word文档另存为pdf之后文本内容显示不全
  15. kernel/Makefile:971: recipe for target ‘prepare3‘ failed
  16. 国际海运流程有哪些,国际海运物流哪家比较好
  17. 新浪再传将被转手 盛大卖股TOM集团接盘?
  18. Nginx中传输带宽限制
  19. 要么忙于生存,要么忙于去死
  20. 阈的粤语发音_粤语发音规则完整版

热门文章

  1. 在PropertyGrid中使用密码显示
  2. 价值100大洋的简体中文汉化补丁下载
  3. 基于Hadoop架构下的FineBI大数据引擎技术原理
  4. 代码的世界里的一群精神病人
  5. 寺庙的纪律性也让我颇有感触
  6. 一个简单的录音软件程序代码【C++】
  7. 飞秋(FeiQ)海量的用户基数决定了这一模式
  8. 『飞鸽』彻底学通string.Format以及IFormattable,IFormatProvider,ICustomFormatter
  9. 火星民众彻夜排队接种飞鸽传书
  10. 比尔盖茨给刚毕业程序员的10点忠告