• 一个简单的SplashScreen


    介绍 这一小段代码可以为您提供一个非常漂亮的启动屏幕!它易于操作且重量轻,因此适用于每个系统。 背景 我花了很长时间寻找合适的splashscreen方法,但我发现所有这些方法都太短,太复杂,或者根本不起作用。我决定找到我自己的鬼鬼祟祟的方法得到一个splashscreen,结果很好!您可以下载我为Visual Studio 2008编写的代码,或者阅读我解释如何快速轻松地完成的文章。 使用的代码 首先,我们从一个新项目(Windows Forms application)开始。在创建项目之后,我们有一个默认的表单,称为“Form1”。我将这个表单重命名为“MainForm”。 我们现在改变了MainForm的一些属性:将“不透明度”设置为“0%”,将“ShowInTaskbar”设置为“False”。如果你想,你也可以改变“StartPosition”为“CenterScreen”。 现在添加另一个表单,称为“SplashScreen”。只需在解决方案资源管理器中右键单击您的项目,进入“添加”,然后进入“Windows窗体…”。对于这个新表单,我们改变了一些属性:“BackgroundImage”->把你的闪屏图像(选择本地资源)放在这里(黑色背景的透明度)。“FormBorderStyle”设置为“None”,“不透明度”设置为“0%”,“ShowInTaskbar”设置为“False”,“TransparancyKey”设置为(在本例中)“黑色” 调整splashscreen大小以获得窗体中的整个splashscreen。 现在我们将把代码添加到splashscreen: 隐藏,复制Code

    using System.Threading;

    在这种形式下,我们需要的唯一函数是: 隐藏,复制Code

    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的代码,我们还需要添加线程支持: 隐藏,复制Code

    using System.Threading;

    让我们添加计时器代码: 隐藏,复制Code

    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;
    }

    一个快速的解释: 在用主窗体启动计时器后,它将被直接禁用(因为这是我能想到的自销毁线程的唯一方式(不完全是真的))。计时器最终只需要运行一次。有点计时器滥用!我们创建一个名为“splash”的对象并打开它。由于Windows XP的一个问题,它是不可能做淡入与透明度。据说它在Vista和更高版本上运行得很好。为了测试这一点,我获得了关于它是哪个版本的系统信息。版本5是Windows XP或2000;在这种情况下,我们会保留淡入,然后立即弹出。在启动之后(当我们已经中断线程时),splashscreen将关闭,突然主窗体将可见并显示在任务栏中。 的兴趣点 我真的没学到什么……只是尝试使用c#并找到一个狡猾的方法来创建一个简单的splashscreen:)(我尝试了20多个不同的想法)。 历史 版本1是最新版本! 本文转载于:http://www.diyabc.com/frontweb/news11140.html

  • 相关阅读:
    Docker+Nginx 部署Vue+Element前端项目
    MySql取字段逗号分隔的第一个
    Mysql数据库中从表字段中存储了主表以逗号隔开的主键ID,现需求查询从表数据以及以逗号隔开的字段改为主表名称隔开(group_count() find_in_set())
    IIS 错误500.21解决方法
    IIS 出现500.19 错误处理解决方式
    Linux中vim的三种模式
    Centos7 .Net Core 使用Supervisor守护进程,进行后台运行
    Nginx反代理ASP.NET Core项目
    C# vb .net实现圆角矩形特效滤镜
    C# vb .net实现旋转特效滤镜
  • 原文地址:https://www.cnblogs.com/Dincat/p/13473316.html
Copyright © 2020-2023  润新知