Javascript 在画布中仅对部分画布使用globalAlpha

Javascript 在画布中仅对部分画布使用globalAlpha,javascript,html,canvas,Javascript,Html,Canvas,我想为画布的一部分设置透明度 除了在画布中创建的矩形之外,我可以对所有画布使用globalAlpha吗?正如我在两次评论中所说的,您只需将全局alpha设置为所需,使用该alpha绘制所需,然后将全局alpha更改为新值,然后在该alpha中绘制所需内容。这可以按如下方式进行 var canvas = document.querySelector('canvas'); var ctx = canvas.getContext('2d'); ctx.fillStyle = 'rgba(255, 0,

我想为画布的一部分设置透明度
除了在画布中创建的矩形之外,我可以对所有画布使用globalAlpha吗?

正如我在两次评论中所说的,您只需将全局alpha设置为所需,使用该alpha绘制所需,然后将全局alpha更改为新值,然后在该alpha中绘制所需内容。这可以按如下方式进行

var canvas = document.querySelector('canvas');
var ctx = canvas.getContext('2d');
ctx.fillStyle = 'rgba(255, 0, 0,1)';
ctx.fillRect(0, 0, 150, 50);
ctx.globalAlpha = 0.2; 
ctx.fillRect(150,50,150,50);

如果您的意思是如何在画布上绘制一组内容后使矩形透明,则可以执行以下操作:

/// clear a rectangle to make canvas transparent
ctx.globalCompositeOperation = 'destination-out';

/// set alpha using a fill color with transparency
ctx.fillStyle = 'rgba(0,0,0,0.5)';

/// fill rectangle which now will become partly transparent all the way
ctx.fillRect(40, 40, 320, 320);

/// reset composite mode
ctx.globalCompositeOperation = 'source-over';
如果这不是您的意思,那么您需要规划您的绘图。如其他地方所述,您可以在绘制某个对象之前设置
globalAlpha
,然后在绘制下一个对象之前设置
globalAlpha
。设置
globalAlpha
后的每个绘制都将使用该alpha值绘制(如果图像alpha的填充样式、笔划样式也使用透明度,这将是两个alpha值相乘的结果)


globalCompositeOperation
决定如何绘制它,例如在现有内容之上,而不是等等(请参见概述)。

您不能设置alpha,绘制某些内容,更改alpha,然后绘制其余内容吗?你想实现什么?我希望所有画布都有透明度,除了画布中的矩形,如果可能的话,类似的东西我需要有透明度的矩形,除了我在画布中创建的矩形,如果可能的话..类似这样的东西:var can=document.getElementById('mycanvas');var context=can.getContext('2d');context.globalAlpha=0.2;context.fillStyle='rgba(255,0,0,1)';context.fillRect(10010015050).removetracperencyfromrec();照我当时的建议去做。设定alpha,画点什么,改变alpha,画rest我不明白我只有一件事要画。矩形如果我在设置alpha之前或之后绘制矩形受alpha影响的矩形情况有点复杂,我在创建矩形之前将imag绘制到画布上,我希望画布中的部分与alpha保持清晰。