java - 如何混合 alpha 值?

标签 java alpha alphablending graphics2d

在Java的AWT中,alpha(不透明度)使用从0(完全透明)到255(完全不透明)的值来表示。如何正确混合 alpha 值,例如实现淡入淡出效果?如果子元素相对于其父元素的 alpha 为 200,而父元素的 alpha 为 100,那么最终绘制的像素的 alpha 是多少?

最佳答案

您对像素 alpha 值有多少控制权?您正在寻找什么样的淡入淡出效果?

默认情况下,不同的图形系统可能会实现不同的 Alpha 操作。我认为最直观且通常是默认的一个是:

   DestColor = DestColor * (1 - SourceAlpha) + SourceColor * SourceAlpha
   DestAlpha left as-is

使用此方案,源 Alpha 仅影响目标表面的颜色分量,而不影响目标表面 Alpha 本身。

我不确定 AWT 的行为方式,或者它是否可以让您对 Alpha 混合操作进行任何级别的控制,但理论上可以以多种不同的方式应用 Alpha。

关于java - 如何混合 alpha 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5784349/

相关文章:

java.lang.reflect.Method invoke() 参数类型不匹配异常

java - HTTP 请求未返回所需的 json

macos - 更改窗口背景的 Alpha,而不是整个窗口

c++ - 带 Alpha channel 的闪烁子窗口

java - 如何将一个迭代器复制到另一个?

java - Triple Des 代码返回不同长度的密码

r - 图中每组不同的 alpha 值

python - 在 matplotlib 图中设置数据数组的散点透明度

c++ - SDL2 - 在纹理上绘制完全透明的圆圈

c++ - 在 OpenGL 中创建和混合动态纹理