public int CompareTo(object obj) { MyColor ob = (MyColor)obj; if (I > ob.I) { return(1); } if (I == ob.I) { return(0); } return(-1); }
override public Bitmap processImage(Bitmap sourseImage, BackgroundWorker worker) { Bitmap resultImage = new Bitmap(sourseImage.Width, sourseImage.Height); var arrayColor = new List <MyColor>(); int R, G, B; MyColor color; for (int y = size / 2; y < sourseImage.Height - size / 2; y++) { worker.ReportProgress((int)((float)y / resultImage.Height * 100)); if (worker.CancellationPending) { return(null); } for (int x = size / 2; x < sourseImage.Width - size / 2; x++) { arrayColor.Clear(); for (int j = -size / 2; j <= size / 2; j++) { for (int i = -size / 2; i <= size / 2; i++) { R = sourseImage.GetPixel(x + i, y + j).R; G = sourseImage.GetPixel(x + i, y + j).G; B = sourseImage.GetPixel(x + i, y + j).B; color = new MyColor(R, G, B); arrayColor.Add(color); } } arrayColor.Sort(); R = arrayColor.ElementAt(size * size / 2).R; G = arrayColor.ElementAt(size * size / 2).G; B = arrayColor.ElementAt(size * size / 2).B; medianColor = Color.FromArgb(R, G, B); resultImage.SetPixel(x - size / 2, y - size / 2, calculateNewPixelColor(sourseImage, x - size / 2, y - size / 2)); } } return(resultImage); }