Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

HTML Canvas 合成


globalCompositeOperation 属性

The globalCompositeOperation 属性设置在绘制新形状时应用的合成操作类型。在前面的章节中,新的绘制内容会叠加在现有内容之上。我们可以使用 globalCompositeOperation 属性来决定如何处理新的阴影。

让我们看一些例子!


“source-over” 值

“source-over” 值是默认值。它会在现有内容之上绘制新的形状。

例子

globalCompositeOperation 属性设置为“source-over”。然后绘制两个重叠的矩形。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

ctx.globalCompositeOperation = "source-over";

// 绘制两个重叠的矩形
ctx.fillStyle = "blue";
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = "red";
ctx.fillRect(40, 40, 100, 100);
</script>
自己试试 »

“source-out” 值

“source-out” 值将只在不与现有内容重叠的地方绘制新的形状。

例子

globalCompositeOperation 属性设置为“source-out”。然后绘制两个重叠的矩形。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

ctx.globalCompositeOperation = "source-out";

// 绘制两个重叠的矩形
ctx.fillStyle = "blue";
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = "red";
ctx.fillRect(40, 40, 100, 100);
</script>
自己试试 »

“destination-over” 值

“destination-over” 值将把新形状绘制在现有内容的后面。

例子

globalCompositeOperation 属性设置为“destination-over”。然后绘制两个重叠的矩形。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

ctx.globalCompositeOperation = "destination-over";

// 绘制两个重叠的矩形
ctx.fillStyle = "blue";
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = "red";
ctx.fillRect(40, 40, 100, 100);
</script>
自己试试 »


“destination-atop” 值

“destination-atop” 值将在新形状与现有内容重叠的地方保留现有内容。新形状将绘制在现有内容的后面。

例子

globalCompositeOperation 属性设置为“destination-atop”。然后绘制两个重叠的矩形。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

ctx.globalCompositeOperation = "destination-atop";

// 绘制两个重叠的矩形
ctx.fillStyle = "blue";
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = "red";
ctx.fillRect(40, 40, 100, 100);
</script>
自己试试 »

“lighter” 值

“lighter” 值将在两个形状重叠的地方产生更明亮的颜色。

例子

globalCompositeOperation 属性设置为“lighter”。然后绘制两个重叠的矩形。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

ctx.globalCompositeOperation = "lighter";

// 绘制两个重叠的矩形
ctx.fillStyle = "blue";
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = "red";
ctx.fillRect(40, 40, 100, 100);
</script>
自己试试 »

“copy” 值

“copy” 值将只显示新形状。

例子

globalCompositeOperation 属性设置为“copy”。然后绘制两个重叠的矩形。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

ctx.globalCompositeOperation = "copy";

// 绘制两个重叠的矩形
ctx.fillStyle = "blue";
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = "red";
ctx.fillRect(40, 40, 100, 100);
</script>
自己试试 »

“xor” 值

“xor” 值将在两个形状重叠的地方使形状透明,并在其他地方正常绘制。

例子

globalCompositeOperation 属性设置为“xor”。然后绘制两个重叠的矩形。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

ctx.globalCompositeOperation = "xor";

// 绘制两个重叠的矩形
ctx.fillStyle = "blue";
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = "red";
ctx.fillRect(40, 40, 100, 100);
</script>
自己试试 »

“multiply” 值

“multiply” 值将产生更暗的图片。将顶层像素与底层像素相乘。

例子

globalCompositeOperation 属性设置为“multiply”。然后绘制两个重叠的矩形。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

ctx.globalCompositeOperation = "multiply";

// 绘制两个重叠的矩形
ctx.fillStyle = "blue";
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = "red";
ctx.fillRect(40, 40, 100, 100);
</script>
自己试试 »

“screen” 值

“screen” 值将产生更亮的图片。反转像素,然后相乘,再反转回来(与“multiply” 相反)。

例子

globalCompositeOperation 属性设置为“screen”。然后绘制两个重叠的矩形。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

ctx.globalCompositeOperation = "screen";

// 绘制两个重叠的矩形
ctx.fillStyle = "blue";
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = "red";
ctx.fillRect(40, 40, 100, 100);
</script>
自己试试 »

“darken” 值

“darken” 值将在两个形状重叠的地方产生更暗的颜色(保留两层的最暗像素)。

例子

globalCompositeOperation 属性设置为“darken”。然后绘制两个重叠的矩形。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

ctx.globalCompositeOperation = "darken";

// 绘制两个重叠的矩形
ctx.fillStyle = "blue";
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = "red";
ctx.fillRect(40, 40, 100, 100);
</script>
自己试试 »

“lighten” 值

“lighten” 值将在两个形状重叠的地方产生更亮的颜色(保留两层的最亮像素)。

例子

globalCompositeOperation 属性设置为“lighten”。然后绘制两个重叠的矩形。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

ctx.globalCompositeOperation = "lighten";

// 绘制两个重叠的矩形
ctx.fillStyle = "blue";
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = "red";
ctx.fillRect(40, 40, 100, 100);
</script>
自己试试 »

“hue” 值

“hue” 值采用顶层的色调,并保留底层的亮度和色度。

例子

globalCompositeOperation 属性设置为“hue”。然后绘制两个重叠的矩形。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

ctx.globalCompositeOperation = "hue";

// 绘制两个重叠的矩形
ctx.fillStyle = "blue";
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = "red";
ctx.fillRect(40, 40, 100, 100);
</script>
自己试试 »

“luminosity” 值

“luminosity” 值采用顶层的亮度,并保留底层的色调和色度。

例子

globalCompositeOperation 属性设置为“luminosity”。然后绘制两个重叠的矩形。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

ctx.globalCompositeOperation = "luminosity";

// 绘制两个重叠的矩形
ctx.fillStyle = "blue";
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = "red";
ctx.fillRect(40, 40, 100, 100);
</script>
自己试试 »

globalCompositeOperation 属性值

The globalCompositeOperation 属性可以具有以下值

描述
source-over 默认值。在现有内容之上绘制新的形状
source-in 仅在新的形状和现有内容重叠的地方绘制新的形状。其他所有内容都将变为透明
source-out 仅在不与现有内容重叠的地方绘制新的形状
source-atop 仅在与现有内容重叠的地方绘制新的形状
destination-over 在现有内容的后面绘制新的形状
destination-in 在新的形状和现有内容重叠的地方保留现有内容。其他所有内容都将变为透明
destination-out 在不与新形状重叠的地方保留现有内容
destination-atop 在与新形状重叠的地方保留现有内容。新形状将绘制在现有内容的后面
lighter 在两个形状重叠的地方产生更明亮的颜色
copy 仅显示新形状
xor 在两个形状重叠的地方使形状透明,并在其他地方正常绘制
multiply 将顶层像素与底层像素相乘。结果是更暗的图片
screen 反转像素,然后相乘,再反转回来。结果是更亮的图片(与“multiply” 相反)
overlay multiply 和 screen 的组合。底层较暗的部分将变暗,较亮的部分将变亮
darken 保留两层的最暗像素
lighten 保留两层的最亮像素
color-dodge 将底层除以反转的顶层
color-burn 将反转的底层除以顶层,然后反转结果
hard-light 与“overlay” 相似,但顶层和底层交换了位置
soft-light “hard-light” 的更柔和版本
difference 从顶层减去底层——反之亦然——始终得到一个正值
exclusion 与“difference” 相似,但对比度更低
hue 采用顶层的色调,并保留底层的亮度和色度
saturation 采用顶层的色度,并保留底层的亮度和色调
color 采用顶层色调和彩度,保留底层亮度
亮度 采用顶层亮度,保留底层色调和彩度

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.