示例#1
0
        public static ColorRGB Overlay(this ColorRGB a, ColorRGB b)
        {
            double alphaA = a.getColorHSV().V;
            double alphaB = a.getColorHSV().V;
            byte   red    = Convert.ToByte(alphaA * a.R + (1 - alphaA) * b.R);
            byte   green  = Convert.ToByte(alphaA * a.G + (1 - alphaA) * b.G);
            byte   blue   = Convert.ToByte(alphaA * a.B + (1 - alphaA) * b.B);

            return(new ColorRGB(red, green, blue));
            //double alpha = a.A + (1 - a.A) * b.A;
            //byte red = Convert.ToByte((1 / alpha) * (a.A * a.R + (1 - a.A) * b.A * b.R));
            //byte green = Convert.ToByte((1 / alpha) * (a.A * a.G + (1 - a.A) * b.A * b.G));
            //byte blue = Convert.ToByte((1 / alpha) * (a.A * a.B + (1 - a.A) * b.A * b.B));
            //return new ColorRGB(alpha, red, green, blue);
        }