Я предполагаю (надеюсь), что вы не устанавливаете свойство BackgroundImage
каждой формы в конструкторе, так как это будет означать, что размер вашего исполняемого файла будет как минимум в 3 МБ больше общего числа форм.
Таким образом, у вас, вероятно, есть код в событии Load формы или его конструкторе для загрузки BackgroundImage
из файла или встроенного ресурса. Это означало бы, что вы будете загружать файл изображения размером 3 МБ каждый раз, когда создаете и отображаете форму.
Существуют разные способы сделать что-то подобное, но независимо от того, что вы делаете, вы хотите убедиться, что вы загружаете этот файл в Bitmap
только один раз за время жизни вашей программы, а затем повторно используете его для каждой формы. Простой способ включить это состоит в том, чтобы изменить конструктор каждой формы (кроме вашей основной формы), чтобы взять Bitmap
в качестве параметра и установить его в качестве BackgroundImage формы:
public SomeForm(Bitmap backgroundImage)
{
this.BackgroundImage = backgroundImage;
}
В событии Load главной формы вы должны создать растровое изображение и загрузить его (с одним большим изображением) из любого места и установить его в качестве BackgroundImage главной формы:
this.BackgroundImage = Bitmap.FromFile('yadda.bmp');
Затем, всякий раз, когда вы создаете и показываете другую форму, вы делаете это так:
SomeForm sform = new SomeForm(this.BackgroundImage);
sform.Show();
Этот подход гарантирует, что ваша программа загружается в файл только один раз, когда загружается ваша основная форма. Некоторая доля задержки, которую вы видите, обусловлена временем, которое требуется для рендеринга изображения (в отличие от времени, которое требуется для его загрузки с диска), поэтому это может решить не все ваши проблемы. Могу ли я предложить не иметь огромное изображение в качестве фона для каждой формы в вашем приложении?