기타

AlphaBlend 공식

오즈마스터 2008. 3. 25. 16:58
AlphaBlend 함수에서 쓰이는 공식 중 "하나" 이다.

Result : 최종적으로 눈에 보이는 값
Src : 그리려고 하는 값
Dst : 배경값
Result.Red = Src.Red * (SCA/255.0) + Dst.Red * (1.0 - (SCA/255.0))
Result.Green = Src.Green * (SCA/255.0) + Dst.Green * (1.0 - (SCA/255.0))
Result.Blue = Src.Blue * (SCA/255.0) + Dst.Blue * (1.0 - (SCA/255.0))


ex> RGB(144,202,250) 을 배경이 RGB(255,255,255) 에다가 Alpha(128) 만큼 색칠하면
어떤값이 나올까?

Result.R = 144 * (128/255) + 255*(1-128/255) = 199
Result.G = 202 * (128/255) + 255*(1-128/255) = 228
Result.B = 250 * (128/255) + 255*(1-128/255) = 252




-- 반대의 경우 계산.
최종값을 RGB(199,228,252) 로 보이게 하고 싶고, 배경은 RGB(255,255,255), Alpha 값 128 로 표현하려면?
S = (R - D) * (255/A) + D

Red 만 계산하면 = (199 - 255) * (255/128) + 255 = -56 * 2 + 255 = 255-112 = 143

오차가 있긴 하지만 비슷하게 뽑을 수 있겠다.