/// <summary> /// 2つの色のアルファブレンディングを行う /// </summary> /// <param name="colorUpper">2色のうち、上になる色</param> /// <param name="colorLower">2色のうち、下になる色</param> /// <returns>合成された色</returns> public static SimpleColor Blend(SimpleColor colorUpper, SimpleColor colorLower) { int a1 = colorUpper.A, a2 = colorLower.A, a12 = a1 * 255, a22 = a2 * 255; int a = a12 + a22 - a1 * a2; return(new SimpleColor( a / 255, (a12 * colorUpper.R + a22 * colorLower.R - a1 * a2 * colorLower.R) / a, (a12 * colorUpper.G + a22 * colorLower.G - a1 * a2 * colorLower.G) / a, (a12 * colorUpper.B + a22 * colorLower.B - a1 * a2 * colorLower.B) / a )); }
/// <summary> /// 2つの色のアルファブレンディングを行い、色を更新する /// </summary> /// <param name="src">下になる色</param> /// <returns>更新されたインスタンス自身</returns> public SimpleColor BlendTo(SimpleColor colorBase) { this.code = Blend(this, colorBase); return(this); }