Пример #1
0
 public void ReduceColor(ColorMul oldcolor, ColorMul newcolor)
 {
     if (Color_array.Select(z => z.color == oldcolor).Count() == 0)
     {
         return;
     }
     else if (Color_array.Select(z => z.color == newcolor).Count() == 0)
     {
         Color_array.Find(z => z.color == oldcolor).color = newcolor;
     }
     else
     {
         List<Point> oldpoints = Color_array.Find(z => z.color == oldcolor).points;
         Color_array.Find(z => z.color == newcolor).points.AddRange(oldpoints);
         Color_array.Remove(Color_array.Find(z => z.color == oldcolor));
     }
     return;
 }
Пример #2
0
 public void AddPoint(ColorMul color, int x, int y)
 {
     if (x < 0 || x >= weigth || y < 0 || y >= height)
     {
         return;
     }
     Point p = new Point() { x = x, y = y };
     ColorMul oldColor = null;
     /*if color is new*/
     if (Color_array.Select(z => z.color == color).Count() == 0 || Color_array.Find(z => z.color == color) == null)
     {
         ColorArray ca = new ColorArray() { color = color, points = new List<Point>() };
         ca.points.Add(p);
         Color_array.Add(ca);
     }
     else
     {
         /*Check unique of point by coordinates*/
         foreach (ColorArray ar in Color_array)
         {
             if (ar.points.Contains(p))
             {
                 oldColor = ar.color;
                 break;
             }
         }
         if (oldColor == color)
         {
             /*it means that point already exists with the same color*/
             /*do nothing*/
         }
         else if (oldColor == null)
         {
             /*it means that point is new and we need add it*/
             Color_array.Find(z => z.color == color).points.Add(p);
         }
         else
         {
             /*point exist with another color. It means we need to change color of the point*/
             Color_array.Find(z => z.color == oldColor).points.Remove(p);
             Color_array.Find(z => z.color == color).points.Add(p);
         }
     }
 }
Пример #3
0
            public ColorMul[,] GetColorGrid()
            {
                int i = 0;
                ColorMul[,] grid = new ColorMul[this.height,this.weigth];
                foreach (ColorArray ca in this.Color_array)
                {
                    ColorMul x = ca.color;
                    x.im = i < 10 ? "0" + (i).ToString() : (i).ToString();
                    foreach (Point p in ca.points)
                    {
                        grid[p.y, p.x] = x;

                    }
                    i++;
                }
                return grid;
            }
Пример #4
0
 public void AddPoint(ColorMul color, IList<Point>Points)
 {
     if (Color_array.FindAll(z => z.color == color).Count() == 0 || Color_array.Find(z => z.color == color) == null)
     {
         ColorArray ca = new ColorArray() { color = color, points = Points.ToList()};
         Color_array.Add(ca);
     }
     else
     {
         Color_array.Find(z => z.color == color).points.AddRange(Points);
     }
 }