在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