Показать картинку при запуске - PullRequest
6 голосов
/ 06 декабря 2010

Как мы можем показать картинку запуска, когда мое приложение запускается, так как все программы работают как Photoshop, Word и т. Д. ??Я планировал вставить его в форму, а затем показать его, но появляется синяя верхняя полоса, на которой есть элементы управления и т.д.

Ответы [ 5 ]

9 голосов
/ 06 декабря 2010

Если вы ищете самый простой способ, вы можете использовать превосходную встроенную поддержку .NET Framework для заставок. Вам придется отложить в сторону любые иррациональные страхи, которые могут возникнуть у вас.включая что-то с именем «Visual Basic» в приложение C #, но этот способ избавит вас от необходимости развертывать собственное решение и беспокоиться о таких вещах, как многопоточность, вызов и все такое.В конце концов, все это сводится к одному и тому же IL.Вот как это работает:

  1. Добавьте ссылку на Microsoft.VisualBasic в ваш проект.

  2. Добавьте новую форму (названную как-то вроде SplashForm) в качестве заставки.

  3. Чтобы сделать ее более похожей на заставку, установите для свойства FormBorderStyle формы значение "Нет" иего StartPosition свойство для "CenterScreen".В эту форму можно добавить любые элементы управления или изображения, которые вы хотите отобразить на заставке.

  4. Добавьте следующий код в файл Project.cs:

    using System;
    using System.Windows.Forms;
    using Microsoft.VisualBasic.ApplicationServices;
    
    namespace WindowsFormsApplication1
    {
       static class Program
       {
          [STAThread]
          static void Main(string[] args)
          {
             Application.EnableVisualStyles();
             Application.SetCompatibleTextRenderingDefault(false);
             new SplashScreenApp().Run(args);
          }
       }
    
       public class SplashScreenApp : WindowsFormsApplicationBase
       {
          protected override void OnCreateSplashScreen()
          {
             this.SplashScreen = new SplashForm();
             this.SplashScreen.ShowInTaskbar = false;
             this.SplashScreen.Cursor = Cursors.AppStarting;
          }
    
             protected override void OnCreateMainForm()
             {
                 //Perform any tasks you want before your application starts
    
                 //FOR TESTING PURPOSES ONLY (remove once you've added your code)
                 System.Threading.Thread.Sleep(2000);
    
                //Set the main form to a new instance of your form
                //(this will automatically close the splash screen)
                this.MainForm = new Form1();
              }
           }
        }
    

Если вы хотите сделать что-то необычное, например создать прозрачный экран-заставку в стиле Adobe Photoshop, вы можете добавить PNG-изображение альфа-каналав файл ресурсов вашего проекта, а затем добавьте следующий код в форму заставки, заменив splashImage на путь к встроенному ресурсу изображения:

protected override void OnPaintBackground(PaintEventArgs pevent)
{
    Graphics g = pevent.Graphics;
    g.DrawImage(splashImage, new Rectangle(0, 0, this.Width, this.Height));
}

protected override void OnPaint(PaintEventArgs e)
{
    //Do nothing here
}

Чтобы это работало, убедитесь, что у вас естьдвойная буферизация выключена выключена , иначе вы получите черный фон для вашей формы.Во всяком случае, нет никакой причины дважды буферизовать заставку.

4 голосов
/ 06 декабря 2010

Вы действительно хотите экран-заставку? В сети много примеров, например: http://www.codeproject.com/KB/cs/prettygoodsplashscreen.aspx

2 голосов
/ 06 декабря 2010

Вы можете удалить все эти синие полосы и т. Д. Через this.FormBorderStyle = FormBorderStyle.None в вашем Form_Load().

Так что на вашем месте я бы создал Форму определенного размера, а затем установил следующее в Form_Load() или непосредственно в коде, сгенерированном дизайнером:

this.FormBorderStyle = FormBorderStyle.None;
this.StartPosition = FormStartPostition.CenterScreen;

Теперь у вас есть заставка, как и во многих других приложениях - все, что вам нужно сделать, это написать код для того, чтобы он был видимым или нетпрочее и прочее:)

1 голос
/ 06 декабря 2010

WPF 3.5 и выше на самом деле имеет встроенную поддержку заставки, для более быстрого рендеринга заставки и намного (намного) меньше искажает код. Подробнее см. на этой странице .

0 голосов
/ 06 декабря 2010

Вы пишете WinForms или приложение WPF?Вы должны будете установить различные свойства в зависимости от того, какой вид вы пишете.Если вы пишете приложение WPF, вы можете добавить атрибуты WindowStyle = "None" и ResizeMode = "NoResize" к элементу верхнего уровня Window в XAML.Первый из них удалит строку заголовка с кнопками свертывания, изменения размера и закрытия, а второй удалит границу вокруг формы.

Теперь у вас есть форма без полей, которую вы можете изменить, чтобы создать заставку, если хотите, или просто добавить свой загрузочный образ.Если вы не хотите, чтобы отображалась форма по умолчанию, вам нужно добавить атрибуты Background = "Transparent" и AllowsTransparency = "True".Первый из них установит прозрачный цвет фона, а второй позволит вашей программе выглядеть прозрачной.Теперь вы можете добавить любое изображение любой формы, и пользователь увидит только это изображение при запуске программы.

PS Обязательно загрузите другую форму, как только начальный экран будет показан в течение заданного промежутка времени или когда методы, которые должны «загружать» вещи, вернут управление.

Довольно простые вещи!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...