2011-04-25 100 views
1

在Java的AWT中,alpha(不透明度)使用從0(完全透明)到255(完全不透明)的值表示。如何正確地混合alpha值,例如實現淡入淡出效果?如果子元素相對於其父元素具有200的alpha值,並且父元素的alpha值爲100,那麼最終繪製的像素的alpha值是多少?如何混合alpha值?

+1

請參閱http://docstore.mik.ua/orelly/java-ent/jfc/ch04_07.htm – 2011-04-25 23:34:46

回答

1

你對像素阿爾法值有多少控制?你在尋找什麼樣的淡入淡出效果?

不同的圖形系統默認情況下可能會實現不同的alpha操作。我覺得一個是最直觀的,因而通常是默認的是:

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

採用這種方案,源阿爾法只會影響到目標表面的顏色分量,而不是目標表面的α本身。

我不確定AWT是如何工作的,或者它是否能夠控制alpha混合操作的任何級別,但alpha可以在理論上以多種不同的方式應用。

1

我認爲這是正確的:200阿爾法childmeans

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