public static void Fill(Point p, Color fillColor, ref ZoomPictureBox PicBox)
        {
            int   x = p.X;
            int   y = p.Y;
            Color temp;

            temp = GetPx(x, y, ref PicBox);
            int countLeft  = x;
            int countRight = x;

            while (countLeft - 1 > 0 && GetPx(countLeft - 1, y, ref PicBox).ToArgb() == temp.ToArgb())
            {
                countLeft--;
            }
            while (countRight + 1 < PicBox.image.Width && GetPx(countRight + 1, y, ref PicBox).ToArgb() == temp.ToArgb())
            {
                countRight++;
            }

            for (int i = countLeft; i <= countRight; i++)
            {
                PicBox.image.SetPixel(i, y, fillColor);
            }

            for (int i = countLeft; i <= countRight; i++)
            {
                if (GetPx(i, y - 1, ref PicBox).ToArgb() == temp.ToArgb() && y - 1 > 0)
                {
                    Fill(new Point(i, y - 1), fillColor, ref PicBox);
                }

                if (GetPx(i, y + 1, ref PicBox).ToArgb() == temp.ToArgb() && y + 1 < PicBox.image.Height - 1)
                {
                    Fill(new Point(i, y + 1), fillColor, ref PicBox);
                }
            }
        }
 public static Color GetPx(int x, int y, ref ZoomPictureBox PicBox)
 {
     return(PicBox.image.GetPixel(x, y));
 }