Конечно ... Добавьте новый WindowsForm
в ваш проект, назовите его SplashImageForm
.Добавьте к этому элемент управления PictureBox
и добавьте в него нужное изображение.Измените размер формы, установите эти SplashImageForm
свойства:
FormBorderStyle - None
ShowInTaskBar - false
StartPosition - CenterScreen
Затем вы хотите показать эту форму перед Form1 и закрыть ее после истечения времени ожидания ... Например, так:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
SplashImageForm f = new SplashImageForm();
f.Shown += new EventHandler((o,e)=>{
System.Threading.Thread t = new System.Threading.Thread(() =>
{
System.Threading.Thread.Sleep(2000);
f.Invoke(new Action(() => { f.Close(); }));
});
t.IsBackground = true;
t.Start();
});
Application.Run(f);
Application.Run(new Form1());
}
РЕДАКТИРОВАТЬ Теперь есть новый поток, который блокирует на System.Threading.Thread.Sleep(2000)
на 2 секунды, и основной поток может блокироваться на Application.Run(f)
, как и должно быть, до SplashImageForm
не закрытоТаким образом, изображение загружается основным потоком, а графический интерфейс отзывчивым.
По истечении времени ожидания вызывается метод Invoke()
, поэтому основной поток, являющийся владельцем формы, закрывает его.Если бы этого не было, возникло бы перекрестное исключение.
Теперь изображение показывается в течение 2 секунд, а после него отображается форма Form1.