Да, воссоздание растрового изображения в коде, который выполняется во время рисования, обычно слишком дорого и слишком сильно замедляет рисование.Сохранение копии растрового изображения решает проблему скорости, требуя дополнительной памяти.
Обратите внимание, что для этого доступно стандартное свойство Control.BackgroundImage, рассмотрите возможность его использования.Вам просто нужно добавить код, который обновляет это свойство (и вызывает Invalidate) при изменении условий, которые требуют другого фонового изображения.Рисование выполняется автоматически.
Вторичные соображения эффективности заключаются в предварительном масштабировании растрового изображения для точного соответствия его размеру ClientSize, что позволяет избежать масштабирования растрового изображения во время рисования.Большая экономия там, особенно когда растровое изображение велико.Но требует переопределения метода OnResize, чтобы вы могли заново сгенерировать масштабированное растровое изображение.Когда это слишком сильно замедляет рисование при изменении размера формы, вам нужно подключить событие ResizeEnd формы.
И, создавая растровое изображение в пиксельном формате Format32bppPArgb, он отрисовывается примерно в 10 раз быстрее на большинстве видеоадаптеров по сравнению слюбой другой формат.