65.9K
CodeProject 正在变化。 阅读更多。
Home

一个简单的启动画面

starIconstarIconemptyStarIconemptyStarIconemptyStarIcon

2.00/5 (3投票s)

2009年3月31日

CPOL

3分钟阅读

viewsIcon

32024

downloadIcon

606

只需几行代码即可让您的启动画面运行起来。

引言

这段小段代码可以为您提供一个非常漂亮的启动画面!它很简单,而且轻量级,因此它适用于每个系统。

背景

我花了很多时间来寻找一种合适的启动画面方法,但我发现的所有方法似乎都太短、太复杂,甚至根本无法运行。我决定找到自己的偷偷摸摸的方法来为自己创建一个启动画面,结果非常好!您可以下载我的 Visual Studio 2008 代码,或阅读文章,其中我解释了如何快速、轻松地自己动手。

Using the Code

首先,我们从一个新项目(Windows 窗体应用程序)开始。创建项目后,我们有一个默认窗体,名为“Form1”。我将此窗体重命名为“MainForm”。

现在我们更改 MainForm 的几个属性:将“Opacity”设置为“0%”,将“ShowInTaskbar”设置为“False”。如果需要,您也可以将“StartPosition”更改为“CenterScreen”。

现在添加另一个窗体,名为“SplashScreen”。只需在解决方案资源管理器中右键单击您的项目,转到“添加”,然后转到“Windows 窗体...”。对于这个新窗体,我们更改几个属性:“BackgroundImage” -> 在此处放置您的启动画面图像(选择本地资源)(使用黑色背景以实现透明度)。将“FormBorderStyle”设置为“None”,“Opacity”设置为“0%”,“ShowInTaskbar”设置为“False”,并将“TransparancyKey”设置为(在这种情况下)“Black”

调整启动画面大小,以使整个启动画面在窗体中。

现在我们要将代码添加到启动画面:使用以下方法将线程功能添加到程序中

using System.Threading;

此窗体中唯一需要的函数是这些

public SplashScreen()
{
    InitializeComponent();
    System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = false;
}
public void OpacityUP()
{
    for (double i = 0; i <= 100; i++)
    {
        this.Opacity = i / 100;
        Thread.Sleep(20);
    }
}

不检查非法跨线程调用将使您能够从线程控制窗体,这正是我们所需要的。“OpacityUP”函数将是实际运行并添加平滑淡入的线程!

接下来,我们将在 MainForm 中添加一个计时器,并确保它已启用。创建计时器后,只需双击它即可自动创建事件代码。现在我们正在编辑 MainForm 的代码,并且我们还必须使用以下方法添加线程支持

using System.Threading;

让我们添加计时器代码

private void ATimer_Tick(object sender, EventArgs e)
{
    ATimer.Enabled = false;
    SplashScreen splash = new SplashScreen();
    splash.Show();
    System.OperatingSystem osInfo = System.Environment.OSVersion;
    if (!(osInfo.Version.Major <= 5))
    {
        Thread th = new Thread(new ThreadStart(splash.OpacityUP));
        th.Start();
        Thread.Sleep(4200);
        th.Abort();
    }
    else
    {
        splash.Opacity = 1;
        Thread.Sleep(4200);
    }
    splash.Close();
    this.ShowInTaskbar = true;
    this.Opacity = 1;
}

快速说明

  1. 计时器在从主窗体启动后立即被禁用(因为这是我唯一能想到的自毁线程的方法(并非完全正确))。计时器只需要运行一次即可。有点滥用计时器!
  2. 我们创建一个名为“splash”的对象并打开它。
  3. 由于 Windows XP 的问题,无法使用透明度进行淡入。它应该与 Vista 及更高版本配合良好。为了测试这一点,我获取了有关它是哪个版本的系统信息。版本 5 是 Windows XP 或 2000;在这种情况下,我们将直接留下淡入并立即弹出它。
  4. 完成启动画面后(当我们已经中断线程时),启动画面将关闭,主窗体将突然可见并在任务栏中显示。

关注点

我真的没有学到多少...只是试图使用 C# 并找到一种偷偷摸摸的方法来创建一个简单的启动画面 :)(我尝试了 20 多种不同的想法)。

历史

版本 1 是最新版本!

© . All rights reserved.