Beispiel #1
0
        /// <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
                       ));
        }
Beispiel #2
0
 /// <summary>
 /// 2つの色のアルファブレンディングを行い、色を更新する
 /// </summary>
 /// <param name="src">下になる色</param>
 /// <returns>更新されたインスタンス自身</returns>
 public SimpleColor BlendTo(SimpleColor colorBase)
 {
     this.code = Blend(this, colorBase);
     return(this);
 }