Пример #1
0
    public Color32 ColorPicker(Layer layer)
    {
        Color32[] pixels = new Color32[(int)layer.Rect.width * (int)layer.Rect.height];
        var       red    = (from l in layer.Channels
                            where l.ID == 0
                            select l).First();
        var green = (from l in layer.Channels
                     where l.ID == 1
                     select l).First();
        var blue = (from l in layer.Channels
                    where l.ID == 2
                    select l).First();
        Channel alpha = layer.AlphaChannel;

        for (int i = 0; i < pixels.Length; i++)
        {
            byte r = red.ImageData[i];
            byte g = green.ImageData[i];
            byte b = blue.ImageData[i];
            byte a = 255;
            if (alpha != null)
            {
                a = alpha.ImageData[i];
            }
            int mod = i % (int)layer.Rect.width;
            int n   = (((int)layer.Rect.width - mod - 1) + i) - mod;
            pixels[pixels.Length - n - 1] = new Color32(r, g, b, a);
        }
        int  r1 = 0;
        int  g1 = 0;
        int  b1 = 0;
        byte a1 = 255;

        pixels.ToList().ForEach(delegate(Color32 name)
        {
            r1 += name.r;
            g1 += name.g;
            b1 += name.b;
        }
                                );
        return(new Color32((byte)(r1 / pixels.Count()), (byte)(g1 / pixels.Count()), (byte)(b1 / pixels.Count()), a1));
    }