示例#1
0
        public int CompareTo(object obj)
        {
            MyColor ob = (MyColor)obj;

            if (I > ob.I)
            {
                return(1);
            }
            if (I == ob.I)
            {
                return(0);
            }
            return(-1);
        }
示例#2
0
        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);
        }