Overview

BeepSplashScreen provides a professional application splash screen that displays during application startup or long-running initialization processes. It features branding elements, progress indication, and smooth fade-in/fade-out animations to create a polished user experience.

Built on the BeepControl foundation, BeepSplashScreen features customizable layouts, logo integration, progress bars, status messages, theme support, and automatic positioning. Perfect for application launches, plugin loading, data initialization, and any process requiring user feedback during startup.

Key Features

🎨 Brand Integration

Logo display with customizable positioning and sizing

📊 Progress Tracking

Built-in progress bar with customizable styles and messaging

✨ Smooth Animations

Fade-in/fade-out transitions for professional appearance

📱 Responsive Layout

Adaptive sizing and automatic screen centering

🎭 Theme Support

Complete theme integration with brand color adaptation

⏱️ Auto Management

Automatic timing and close functionality

Visual Preview

Standard Splash Screen

Beep Application

Professional Business Solutions

Loading modules... 65%

Standard splash screen with logo, branding, and progress bar

Basic Usage

Simple Splash Screen

// Create a basic splash screen
var splash = new BeepSplashScreen();
splash.Logo = Properties.Resources.AppLogo;
splash.Title = "My Application";
splash.Subtitle = "Loading, please wait...";
splash.ShowProgressBar = true;

// Show splash screen
splash.Show();

// Simulate loading process
for (int i = 0; i <= 100; i += 10)
{
    splash.ProgressValue = i;
    splash.StatusMessage = $"Loading... {i}%";
    Thread.Sleep(200);
    Application.DoEvents();
}

// Close splash screen
splash.Close();

Application Startup with Splash

public partial class MainForm : Form
{
    private BeepSplashScreen splashScreen;

    public MainForm()
    {
        ShowSplashScreen();
        InitializeApplication();
        HideSplashScreen();
    }

    private void ShowSplashScreen()
    {
        splashScreen = new BeepSplashScreen
        {
            Title = "Business Suite Pro",
            Subtitle = "Enterprise Management Solution",
            Logo = Properties.Resources.CompanyLogo,
            Theme = "Corporate",
            ShowProgressBar = true,
            FadeInDuration = 500
        };

        splashScreen.Show();
        Application.DoEvents();
    }

    private void InitializeApplication()
    {
        // Step 1: Load configuration
        splashScreen.StatusMessage = "Loading configuration...";
        splashScreen.ProgressValue = 20;
        LoadConfiguration();

        // Step 2: Initialize database
        splashScreen.StatusMessage = "Connecting to database...";
        splashScreen.ProgressValue = 60;
        InitializeDatabase();

        // Step 3: Finalize
        splashScreen.StatusMessage = "Finalizing...";
        splashScreen.ProgressValue = 100;
        Thread.Sleep(500);
    }

    private void HideSplashScreen()
    {
        splashScreen?.FadeOut();
    }
}

Properties

Core Properties

Property Type Default Description
Title string "" Main application title text
Subtitle string "" Subtitle or tagline text
Logo Image null Application logo image
StatusMessage string "" Current loading status message

Progress Properties

Property Type Default Description
ShowProgressBar bool true Show/hide the progress bar
ProgressValue int 0 Progress percentage (0-100)
AutoClose bool false Automatically close after completion

Examples

Async Application Loading

public async Task LoadApplicationAsync()
{
    var splash = new BeepSplashScreen
    {
        Title = "Enterprise Dashboard",
        Subtitle = "Advanced Analytics Platform",
        Logo = Properties.Resources.Logo,
        Theme = "Professional"
    };

    splash.Show();

    try
    {
        await LoadConfigurationAsync(splash);
        await InitializeDatabaseAsync(splash);
        await LoadPluginsAsync(splash);
        
        splash.FadeOut();
        return true;
    }
    catch (Exception ex)
    {
        splash.Close();
        MessageBox.Show($"Failed to load: {ex.Message}");
        return false;
    }
}

private async Task LoadConfigurationAsync(BeepSplashScreen splash)
{
    splash.StatusMessage = "Loading configuration...";
    splash.ProgressValue = 33;
    await Task.Delay(1000); // Simulate work
}

private async Task InitializeDatabaseAsync(BeepSplashScreen splash)
{
    splash.StatusMessage = "Connecting to database...";
    splash.ProgressValue = 66;
    await Task.Delay(1500); // Simulate work
}

private async Task LoadPluginsAsync(BeepSplashScreen splash)
{
    splash.StatusMessage = "Loading plugins...";
    splash.ProgressValue = 100;
    await Task.Delay(800); // Simulate work
}

Theming

BeepSplashScreen provides comprehensive theming support with brand-aware styling:

Theme Application

var splash = new BeepSplashScreen
{
    Theme = "CorporateTheme",
    UseThemeColors = true
};

// Theme automatically applies:
// - BackgroundColor: Primary theme background
// - ForeColor: Theme text colors
// - ProgressBarColor: Theme accent colors
// - BorderColors: Theme border styling

Best Practices

🎯 User Experience

  • Meaningful branding: Use logo and colors that represent your application
  • Progress feedback: Show actual loading progress, not fake progress
  • Clear messaging: Provide specific status messages for each loading step
  • Appropriate timing: Don't show splash screen for very fast loading

🔧 Implementation

  • Thread safety: Update splash screen from UI thread only
  • Exception handling: Handle loading failures gracefully
  • Memory management: Properly dispose of splash screen resources
  • Async loading: Use async/await for loading operations
💡 Design Tip

Design your splash screen to reinforce your brand identity while providing useful feedback about the loading process.

✅ Best Practice

Use actual loading progress rather than fake progress bars - users appreciate honest feedback about application startup time.