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)); }