显示启动图片

时间:2010-12-06 09:27:53

标签: c# visual-studio-2010

当我的应用程序启动时,我们怎么能显示启动画面,因为每个软件如Photoshop,vs word等?我计划将它粘贴在表格上,然后显示它,但有顶部的蓝色条,有控制等任何想法/

5 个答案:

答案 0 :(得分:9)

如果您正在寻找最简单的方法,您可以使用.NET Framework对启动屏幕的出色内置支持。您必须抛开任何非理性的恐惧,你可能会有在C#应用程序中包含名称为“Visual Basic”的内容,但这样可以避免必须滚动自己的自定义解决方案,并担心多线程,调用等所有问题。无论如何,这一切都归结为同样的IL。以下是它的工作原理:

  1. 在项目中添加对Microsoft.VisualBasic的引用。

  2. 添加一个新表单(名称类似于SplashForm)作为启动画面。

  3. 要使其看起来更像正确的启动画面,请将表单的FormBorderStyle property设置为“无”,将其StartPosition property设置为“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();
              }
           }
        }
    

  5. 如果你想做一些像Adobe Photoshop一样的创建透明闪屏的东西,你可以将alpha通道PNG图像添加到项目的Resources文件中,然后添加以下内容代码到您的初始屏幕表单,将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
    }
    

    要使其正常工作,请确保您已将关闭关闭,否则您将获得表单的黑色背景。无论如何,没有理由双重缓冲启动画面。

答案 1 :(得分:4)

你真的想要一个闪屏吗?网上有很多例子,例如:http://www.codeproject.com/KB/cs/prettygoodsplashscreen.aspx

答案 2 :(得分:2)

您可以通过this.FormBorderStyle = FormBorderStyle.None中的Form_Load()删除所有这些蓝条等。

如果我是你,我会创建一个特定大小的表单,然后在Form_Load()中设置以下内容 或者直接在设计师生成的代码中:

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

现在你有一个像许多其他应用程序一样的启动画面 - 所有你必须做的就是编写所有使其可见或不可用的代码等等:)

答案 3 :(得分:1)

WPF 3.5及更高版本实际上内置了启动画面支持,可以更快地渲染启动画面,并且代码更少(更多)。有关详细信息,请参阅this page

答案 4 :(得分:0)

您在编写WinForms或WPF应用程序吗?您必须根据您编写的类型设置不同的属性。如果您正在编写WPF应用程序,则可以将WindowStyle =“None”和ResizeMode =“NoResize”属性添加到XAML中的Window顶级元素。第一个将使用最小化,调整大小和关闭按钮删除标题栏,而第二个将删除表单周围的边框。

现在,您有一个无边框表单,您可以根据需要进行修改以创建启动屏幕,或者只是添加启动图像。如果您不希望显示默认表单,则还需要添加Background =“Transparent”和allowsTransparency =“True”属性。第一个将背景颜色设置为透明,而第二个允许您的程序看起来透明。现在,您可以添加任何形状的任何图像,用户将在程序启动时仅看到该图像。

P.S。一旦启动屏幕显示一段时间,或者一旦应该“加载”东西的方法返回控制,一定要加载另一个表单。

非常简单的东西!!