Доброго времени суток!
Делаю приложение для накладывания фильтров на фото(чисто потренироваться).
Нужно сделать список фильтров с предпросмотром как в инстаграме.
Решил это сделать так: добавляю обработанные объекты класса "Picture"
public class Picture
{
public uint Width { get; set; }
public uint Height { get; set; }
public Pixel[,] Pixels { get; set; }
}
в list Pictures
public class FilterExplorer
{
private readonly OriginalPicture originalPicture = OriginalPicture.GetInstance(); // Здесь один из ОБ класса "Picture" каторые не должен меняться в данном классе
private readonly IFilter halftoneFilter = HalftoneFilter.GetInstance(); // Это об одного из фиитров
public List<Picture> Pictures { get; private set; } = new List<Picture>(); // Здесь хранятся обработанные картинки и одна НЕ обработанная
private FilterExplorer()
{
Initialization();
}
private void Initialization()
{
Pictures.Add(originalPicture.Picture); // вот та самая не обработанная картинка
Pictures.Add(halftoneFilter.Filtration(originalPicture.Picture)); // и обработанная
}
}
Проблема собственно в чем когда я добавляю то первая картинка перенимает значение второго. Причем это происходит до возвращения значения функции "Filtration"
public Picture Filtration(Picture picture)
{
for (uint x = 0; x < picture.Width; x++)
{
for (uint y = 0; y < picture.Height; y++)
{
double convertedPoint =
0.3 * picture.Pixels[x, y].R
+ 0.59 * picture.Pixels[x, y].G
+ 0.11 * picture.Pixels[x, y].B;
picture.Pixels[x, y].R = convertedPoint;
picture.Pixels[x, y].G = convertedPoint;
picture.Pixels[x, y].B = convertedPoint;
}
}
return picture;
}