首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在p5.js中绘制半透明颜色时的变换颜色

在p5.js中绘制半透明颜色时的变换颜色
EN

Stack Overflow用户
提问于 2022-09-26 20:09:35
回答 1查看 274关注 0票数 3

在p5.js中绘制alpha值低于255的颜色时,似乎应用了转换:

代码语言:javascript
运行
复制
for (const color of [[1,2,3,255],[1,2,3,4],[10,11,12,13],[10,20,30,40],[50,100,200,40],[50,100,200,0],[50,100,200,1]]) {
  clear();
  background(color);
  loadPixels();
  print(pixels.slice(0, 4).join(','));
}
代码语言:javascript
运行
复制
Input/Expected Output   Actual Output (Firefox)
1,2,3,255               1,2,3,255 ✅
1,2,3,4                 0,0,0,4
10,11,12,13             0,0,0,13
10,20,30,40             6,19,25,40
50,100,200,40           51,102,204,40
50,100,200,0            0,0,0,0
50,100,200,1            0,0,255,1

alpha值被保留,但RGB信息丢失,特别是在低alpha值时。

这使得可视化是不可能的,例如,首先绘制2D形状,然后通过更改alpha值来显示特定区域的可见性。

这些转换是否可以关闭,或者它们在任何方面都是可预测的?

更新:行为不特定于p5.js:

代码语言:javascript
运行
复制
const ctx = new OffscreenCanvas(1, 1).getContext('2d');
for (const [r,g,b,a] of [[1,2,3,255],[1,2,3,4],[10,11,12,13],[10,20,30,40],[50,100,200,40],[50,100,200,0],[50,100,200,1]]) {
  ctx.clearRect(0, 0, 1, 1);
  ctx.fillStyle = `rgba(${r},${g},${b},${a/255})`;
  ctx.fillRect(0, 0, 1, 1);
  console.log(ctx.getImageData(0, 0, 1, 1).data.join(','));
}
EN

回答 1

Stack Overflow用户

发布于 2022-10-05 21:15:58

我可能离here...but很远,看起来在background方法中,如果_isErasing是真的,那么调用blendMode。默认情况下,这将适用于颜色的线性插值。

请参阅https://github.com/processing/p5.js/blob/9cd186349cdb55c5faf28befff9c0d4a390e02ed/src/core/p5.Renderer2D.js#L45

请参阅https://p5js.org/reference/#/p5/blendMode

混合-线性插值颜色:C=A*因子+ B.这是默认的混合模式.

所以,如果您将混合模式设置为REPLACE,我认为它应该可以工作。

替换-像素完全替换其他像素,而不使用alpha (透明)值。

代码语言:javascript
运行
复制
blendMode(REPLACE);
for (const color of [[1,2,3,255],[1,2,3,4],[10,11,12,13],[10,20,30,40],[50,100,200,40],[50,100,200,0],[50,100,200,1]]) {
  clear();
  background(color);
  loadPixels();
  print(pixels.slice(0, 4).join(','));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73859440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档