在Java的AWT中,alpha(不透明度)使用从0(完全透明)到255(完全不透明)的值表示。如何正确地混合alpha值,例如实现淡入淡出效果?如果子元素相对于其父元素具有200的alpha值,并且父元素的alpha值为100,那么最终绘制的像素的alpha值是多少?如何混合alpha值?
1
A
回答
1
你对像素阿尔法值有多少控制?你在寻找什么样的淡入淡出效果?
不同的图形系统默认情况下可能会实现不同的alpha操作。我觉得一个是最直观的,因而通常是默认的是:
DestColor = DestColor * (1 - SourceAlpha) + SourceColor * SourceAlpha
DestAlpha left as-is
采用这种方案,源阿尔法只会影响到目标表面的颜色分量,而不是目标表面的α本身。
我不确定AWT是如何工作的,或者它是否能够控制alpha混合操作的任何级别,但alpha可以在理论上以多种不同的方式应用。
1
我认为这是正确的:200阿尔法child
means
blended = 200/255 * child + (1 - 200/255) * parent
我们已经习惯了这样的像素值,但我们也可以插在相同的方式alpha通道。我们必须假装的child
“真正的”阿尔法值为255:
blended = 255 * 200/255 + 100 * (1 - 200/255)
child.alpha parent.alpha
这大约是222
This question也可能是有用的。
+0
这取决于您正在使用哪种混合功能。有很多(虽然看起来像最常见的那个......) – 2011-04-25 23:40:31
+0
这只是一个标准的线性插值。 – YXD 2011-04-25 23:41:04
相关问题
- 1. 如何Direct3D Alpha混合
- 2. 使用alpha值混合UIImage
- 3. WebGL alpha混合
- 4. OpenGL alpha混合
- 5. 混色VS Alpha混合
- 6. 背景Alpha混合
- 7. 预乘alpha混合
- 8. alpha混合在GTK
- 9. C#Alpha混合形式Alpha混合控制
- 10. 如何在DirectX上启用Alpha混合?
- 11. 如何使混合JPG/PNG 8位alpha
- 12. 如何创建alpha混合面板?
- 13. 如何将曲面与多个alpha值混合?
- 14. OpenGL(libgdx) - 混合alpha地图
- 15. 转换ARBG与alpha混合
- 16. MFC CImage alpha混合出错
- 17. OpenGLES混合bug,alpha积累
- 18. Alpha与OpenGL ES 2.0混合?
- 19. Emgu CV中的Alpha混合
- 20. 为什么alpha混合如此昂贵?
- 21. Libgdx/Opengl alpha混合(结果alpha被替换为源alpha)
- 22. OpenGL Alpha混合问题,混合忽略(也许)?
- 23. Alpha混合,透明度和z顺序
- 24. 使用openCV进行alpha混合
- 25. XNA/MonoGame:深度排序alpha混合UserPrimitives
- 26. DirectX alpha混合(延迟渲染)
- 27. 与源在alpha混合(HTML5画布)
- 28. .NET Alpha混合显示为纯色
- 29. OpenGL重复调用glTexImage2D和alpha混合
- 30. 在Monogame中Spritebatch的Alpha混合问题
请参阅http://docstore.mik.ua/orelly/java-ent/jfc/ch04_07.htm – 2011-04-25 23:34:46