Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / C#

Make a WindowsForm fade in on form load and fade out on form close

3.50/5 (8 votes)
19 Apr 2011CPOL 30K  
This code snippet will make your Form fade in on Form Load and fade out on Form Closing. Also, it has a built-in ImageHandler to convert a Base64 string to an Image.

C#
using System;
using System.Windows.Forms;
using System.ComponentModel;
using System.Collections.Generic;
using System.Drawing;
using System.IO;

namespace WindowsFormsApplication2
{
    public partial class frmSplashScreen : Form
    {
        private IContainer fader = new Container();
        private double FadeInEffect;
        private Timer FadeIn_FadeOut;
        private ImageHandler SplashScreenImage = new ImageHandler();
        private bool FadeIn;        
        private const string SplashImage = "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";
        private bool Closeable;

        public frmSplashScreen()
        {            
            InitializeComponent();            
            FadeIn_FadeOut = SplashScreen(fader);
            this.FadeIn_FadeOut.Enabled = true;
            this.BackgroundImage = SplashScreenImage.SplashImage();
            this.FadeIn_FadeOut.Tick += new System.EventHandler(FadeInOut_Tick);
            FadeIn = true;
            this.Opacity = 0;
        }

        private Timer SplashScreen(IContainer container)
        {
            return new Timer(container);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.SuspendLayout();
            // 
            // frmSplashScreen
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.BackColor = System.Drawing.Color.White;
            this.ClientSize = new System.Drawing.Size(320, 240);
            this.Name = "frmSplashScreen";
            this.Text = "Form1";
            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmSplashScreen_FormClosing);
            this.ResumeLayout(false);

        }

        #endregion

        internal class ImageHandler : List<string>
        {
            internal ImageHandler()
            {
                this.Add(frmSplashScreen.SplashImage);
            }
            internal protected Image SplashImage()
            {
                return Image.FromStream(new MemoryStream(Convert.FromBase64String(this[0])));               
            }
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing && (fader != null))
            {
                fader.Dispose();
            }
            base.Dispose(disposing);
        }

        

        private void FadeInOut_Tick(object sender, EventArgs e)
        {
            if (FadeIn)
            {
                FadeInEffect += 0.1;
                DoFadeIn();
            }
            else
            {
                FadeInEffect -= 0.1;
                DoFadeOut();
            }
        }

        private void DoFadeOut()
        {
            if (FadeInEffect <= 1.1 && FadeInEffect > 0)
            {
                this.Opacity = FadeInEffect;
                this.Refresh();
            }
            else if (FadeInEffect <= 0)
            {
                Closeable = true;
                Application.Exit();
            }
        }

        private void DoFadeIn()
        {
            if (FadeInEffect <= 1.1)
            {
                this.Opacity = FadeInEffect;
                this.Refresh();
            }
            else
            {
                FadeIn_FadeOut.Enabled = false;
            }
        }

        private void frmSplashScreen_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!Closeable)
            {
                e.Cancel = true;
                FadeIn = false;
                FadeIn_FadeOut.Enabled = true;
            }
        }        
    }
}

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)