Я работаю в C# и хочу сохранить ссылку на PictureBox.Image, привязанную к переменной, а не к объекту переменной. Это означает, что я хочу свободно изменять объекты этой переменной, и PictureBox всегда будет ссылаться на эту переменную.
У меня есть класс, который манипулирует изображениями, объединяет их и возвращает изображение ImageShow
для визуализации в PictureBox. Часто мне приходится присваивать новый объект Image переменной. Когда я это делаю, PictureBox сохраняет старый объект, а я хочу, чтобы он взял новый.
class Foo
{
Image ImageShow = null;
public void FooFunc()
{
//some code
changeImageSize(new Size(600,800))
}
private void changeImageSize(Size newSize)
{
if(ImageShow != null)
ImageShow.Dispose();
ImageShow = new Bitmap(newSize.Width, newSize.Height);
}
}
Когда я делаю код, подобный следующему:
var obj = Foo();
obj.SetImage(new Bitmap(50,50));
pictureBox.Image = obj.GetImage();
obj.FooFunc();
PictureBox сохраняет уничтожено старое изображение объекта. Поэтому я получаю сообщение об ошибке, если пытаюсь что-либо сделать с PictureBox.
Возврат нового объекта изображения каждый раз создает множество зависимостей между внутренним кодом класса и PictureBox. Так что это не лучшее решение для меня.
Простой пример:
Image img;
img = new Bitmap(200, 200);
pictureBox1.Image = img;
img = new Bitmap(300, 300);
Picturebox продолжает ссылаться на старое изображение
pictureBox1.Image.Size = {Width = 200 Height = 200}
В то время как я хочу, чтобы в относится к переменной img
и новый объект