/// <summary> /// Добавляет массив пикселей к региону и пересчитывает параметры региона /// </summary> /// <param name="pixels">Добавляемый к региону массив пикселей</param> public void AddPixelsWithParametersRecalculation(Pixel[] pixels) { for (int i = 0; i < pixels.Length; i++) { pixels[i].Region = this; } RegionPixels.AddRange(pixels); CalculateParameters(PixelAction.add, pixels); }
/// <summary> /// Проверяет, есть ли в данном регионе пиксель с заданным Id /// </summary> /// <param name="pixelId">Id пикселя</param> /// <returns>true, если пиксель есть в регионе, false, если его нет</returns> public bool isPixelInRegion(int[] pixelId) { var pixel = RegionPixels.Find(x => x.Id[0] == pixelId[0] && x.Id[1] == pixelId[1]); if (pixel != null) { return(true); } else { return(false); } }
/// <summary> /// Удаляет все пиксели региона без пересчета параметров региона /// </summary> /// <returns>Массив удаленных пикселей региона</returns> public Pixel[] RemovePixels() { Pixel[] removedPixels = new Pixel[RegionPixels.Count]; for (int i = 0; i < RegionPixels.Count; i++) { removedPixels[i] = RegionPixels[i]; } RegionPixels.Clear(); // удаляем также список расстояний DistanceSums.Clear(); return(removedPixels); }
/// <summary> /// Удаляет пиксель из региона без пересчета параметров региона /// </summary> /// <param name="pixelId">Идентификатор удаляемого пикселя - массив с координатами i, j</param> public Pixel RemovePixel(int[] pixelId) { Pixel removedPixel = null; for (int i = 0; i < RegionPixels.Count; i++) { if (RegionPixels[i].Id[0] == pixelId[0] && RegionPixels[i].Id[1] == pixelId[1]) { removedPixel = RegionPixels[i]; RegionPixels.RemoveAt(i); break; } } return(removedPixel); }
/// <summary> /// Удаляет пиксель из региона и пересчитывает параметры региона /// </summary> /// <param name="pixelId">Идентификатор удаляемого пикселя - массив с координатами i, j</param> public Pixel RemovePixelWithParametersRecalculation(int[] pixelId) { Pixel removedPixel = null; for (int i = 0; i < RegionPixels.Count; i++) { if (RegionPixels[i].Id[0] == pixelId[0] && RegionPixels[i].Id[1] == pixelId[1]) { removedPixel = RegionPixels[i]; RegionPixels.RemoveAt(i); // удаляем также и из списка расстояний DistanceSums.RemoveAt(i); break; } } CalculateParameters(PixelAction.remove, new Pixel[] { removedPixel }); return(removedPixel); }
/// <summary> /// Добавляет массив пикселей к региону без пересчета параметров региона /// </summary> /// <param name="pixels">Добавляемый к региону массив пикселей</param> public void AddPixels(Pixel[] pixels) { RegionPixels.AddRange(pixels); }
/// <summary> /// Добавляет пиксель к региону и пересчитывает параметры региона /// </summary> /// <param name="pixel">Пиксель, добавляемый к региону</param> public void AddPixelWithParametersRecalculation(Pixel pixel) { pixel.Region = this; RegionPixels.Add(pixel); CalculateParameters(PixelAction.add, new Pixel[] { pixel }); }
/// <summary> /// Добавляет пиксель к региону без пересчета параметров региона /// </summary> /// <param name="pixel">Пиксель, добавляемый к региону</param> public void AddPixel(Pixel pixel) { RegionPixels.Add(pixel); }