【H5】 canvas图像各种合成详解

2023-11-15

本素材来源:https://www.cnblogs.com/hzj680539/p/5068487.html
尊重第一作者,把知识奉献给大家!

简易直观图:

黄色圆为原图,蓝色正方形为新图
在这里插入图片描述

红色圆为新图,蓝色为原图!

globalCompositeOperation = “source-over” 这是默认设置,新图形会覆盖在原有内容之上。
在这里插入图片描述

destination-over  会在原有内容之下绘制新图形。
在这里插入图片描述
source-in  新图形会仅仅出现与原有内容重叠的部分。其它区域都变成透明的。
在这里插入图片描述

destination-in 原有内容中与新图形重叠的部分会被保留,其它区域都变成透明的。

在这里插入图片描述

source-out  结果是只有新图形中与原有内容不重叠的部分会被绘制出来。

在这里插入图片描述

destination-out  原有内容中与新图形不重叠的部分会被保留。

在这里插入图片描述

source-atop  新图形中与原有内容重叠的部分会被绘制,并覆盖于原有内容之上。

在这里插入图片描述

destination-atop  原有内容中与新内容重叠的部分会被保留,并会在原有内容之下绘制新图形

在这里插入图片描述

lighter  两图形中重叠部分作加色处理。

在这里插入图片描述

darker  两图形中重叠的部分作减色处理。

在这里插入图片描述

xor  重叠的部分会变成透明。
在这里插入图片描述

copy  只有新图形会被保留,其它都被清除掉。

在这里插入图片描述

以destination-out为例子,画个月亮实战效果:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        body{background-color: #000;}
        canvas{border:1px solid deeppink;}
    </style>
</head>
<body>
    <canvas width='500' height='500'></canvas>

    <script>
        const oC = document.querySelector('canvas');
        const ctx = oC.getContext( "2d" );

        ctx.beginPath();
        ctx.fillStyle = '#fff'
        ctx.arc( 200,200,100,0,6.3,false )//源图像
        ctx.fill()
        ctx.closePath();    

        //"destination-out"     只显示目标图像之外的源图像
        ctx.globalCompositeOperation = "destination-out"

        ctx.beginPath();
        ctx.fillStyle = '#f00'
        ctx.arc( 250,200,100,0,6.3,false ) //目标图像
        ctx.fill()
        ctx.closePath();   
    </script>
</body>
</html>

效果图如下:

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【H5】 canvas图像各种合成详解 的相关文章

随机推荐

  • PGP软件的使用实验报告

    PGP软件的使用 一 实验目的 二 实验环境 三 实验原理 四 实验步骤及结果 五 实验总结 一 实验目的 1 通过认识PGP加密过程 加深对加密理论的理解 2 学会使用PGP软件对文件和电子邮件加密 二 实验环境 PC机至少2台 组建成局
  • 数据结构之实现无向图的广度优先搜索算法

    include
  • Spring揭秘 学习笔记一 (Spring的IoC容器 一)

    Spring框架为POJO提供的各种服务共同组成了Spring的生命之树 如图1 1所示 第2章 IoC的基本概念 2 1 IoC全称为Inversion of Control 中文通常翻译为 控制反转 它还有一个别名叫做依赖注入 Depe
  • Docker部署Prometheus

    组件介绍 Prometheus Server 普罗米修斯的主服务器 node exporter 用于机器系统数据收集 mysqld exporter 用于MySQL数据库数据收集 Cadvisor 用于收集宿主机上的docker容器数据 G
  • mysql group by cube_group by、grouping sets、with rollup、with cube方法

    场景 在编写报表的 sql 脚本的时候 可能会遇到多维度组合的情况 例如下面的情况 常规的做法是编写不同维度组合的 sql 然后再使用 union all 进行全集 当分组维度数量比较多的时候 union的sql代码会非常长 但你若熟悉下面
  • SSLv3 存在严重设计缺陷漏洞,整改方法

    发现此问题后 进入WINDOWS注册表 然后修改 注册表进入 HKey Local Machine System CurrentControlSet Control SecurityProviders SCHANNEL Protocols
  • scel转txt抽取词库

    最近需要词库来优化分词效果 找到了有大神写好的能将搜狗词库scel转成txt的python脚本 http blog csdn net zhangzhenhu article details 7014271 实际运行时因为python版本不同
  • Linux常用指令总结

    一 基础指令 1 ls 列出当前路径下的所有文件和目录的名称 ls l 以列表的形式展现所有 ls a 显示隐藏文件 ls h 将列出的文件大小以可读性较好的方式显示 默认单位为字节 文件大小过大 会以合适的单位来进行转化 但必须和 l 一
  • C++之对封装、继承、多态的理解

    目录 一 对封装 继承和多态的简单理解 二 举例 1 封装的例子 2 继承的例子 3 多态的例子 三 代码实现 1 封装 C 或Java实现 2 继承 C 或Java实现 3 多态 C 或Java实现 四 以一个简单的实例 剖析 封装 的实
  • C++ 按日期时间生成文件

    C 按日期时间生成文件 在日常开发环境中 需要按照时间去命名文件名 因此需要创建如年 月 日此类的字符串 这里给出例子 定义时间命名字符串的格式 enum FileNameStyle example 2022 07 11 14 54 27
  • 解决MSBUILD : error MSB3428错误

    问题 MSBUILD error MSB3428 未能加载 Visual C 组件 VCBuild exe 要解决此问题 1 安装 NET Framework 2 0 SDK 2 安装 Microsoft Visual Studio 200
  • java大津法确定阈值,大津法(最大类间阈值法)

    大津法又叫最大类间方差法 最大类间阈值法 OTSU 它的基本思想是 用一个阈值将图像中的数据分为两类 一类中图像的像素点的灰度均小于这个阈值 另一类中的图像的像素点的灰度均大于或者等于该阈值 如果这两个类中像素点的灰度的方差越大 说明获取到
  • tkinter批量循环创建按钮

    CourseList res courseList button list sy 20 for i in range len CourseList CourseList i CourseList i courseName CourseLis
  • 实现不同局域网间的文件共享和端口映射,使用Python自带的HTTP服务

    文章目录 1 前言 2 本地文件服务器搭建 2 1 python的安装和设置 2 2 cpolar的安装和注册 3 本地文件服务器的发布 3 1 Cpolar云端设置 3 2 Cpolar本地设置 4 公网访问测试 5 结语 1 前言 数据
  • Linux系统常用命令解读

    测试常用Linux进行得一些操作 查看日志 定位问题原因 修改配置文件中的一些配置进行测试 例如开关 文件存放路径 修改定时任务时间 查看服务器性能 远程登录工具 xshell winSCPC ll ls l 会列出该文件下的所有文件 文件
  • Linux生成UUID的算法方式(序列号C/C++代码实现)

    Linux中想获取机器的唯一标识 UUID 只需要在命令行中输入uuid就可以看到类似格式为 xxxxxxxx xxxx xxxx xxxxxxxxxxxxxxxx 8 4 4 16 机器标识 通过该唯一标识生成注册码 序列号 有了设备的唯
  • MySQL - 全文索引

    全文索引 英文查找 全文索引主要对字符串类型建立基于分词的索引 主要是基于CHAR VARCHAR和TEXT的字段上 以便能够更加快速地查询数据量较大的字符串类型的字段 全文索引以词为基础的 MySQL默认的分词是所有非字母和数字的特殊符号
  • 2022-04-20 Sass学习笔记(四) Sass的混入(mixin),继承(extend)和导入(import)

    1 Sass混入 mixin 与 include mixin 指令允许我们定义一个可以在整个样式表中重复使用的样式 include 指令可以将混入 mixin 引入到文档中 语法 定义 mixin mixin name 使用 selecto
  • 【华为OD机试真题 JAVA】连续出牌数量

    JS版 华为OD机试真题 JS 连续出牌数量 标题 连续出牌数量 时间限制 1秒 内存限制 262144K 语言限制 不限 有这么一款单人卡牌游戏 牌面由颜色和数字组成 颜色为红 黄 蓝 绿中的一种 数字为0 9中的一个 游戏开始时玩家从手
  • 【H5】 canvas图像各种合成详解

    本素材来源 https www cnblogs com hzj680539 p 5068487 html 尊重第一作者 把知识奉献给大家 简易直观图 黄色圆为原图 蓝色正方形为新图 红色圆为新图 蓝色为原图 globalCompositeO