AlphaBlend 함수에서 쓰이는 공식 중 "하나" 이다.
Result : 최종적으로 눈에 보이는 값
Src : 그리려고 하는 값
Dst : 배경값
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
오차가 있긴 하지만 비슷하게 뽑을 수 있겠다.
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
오차가 있긴 하지만 비슷하게 뽑을 수 있겠다.