public AboutBox()
        {
            InitializeComponent();

            this.Icon = Resources.zss_main;
            Bitmap bmp = Resources.main;

            bmp          = ColorMatrices.ApplyColorMatrix(bmp, ColorMatrices.InverseFilter());
            bmp          = ColorMatrices.ApplyColorMatrix(bmp, ColorMatrices.SaturationFilter(-250));
            pbLogo.Image = bmp;
            this.Text    = String.Format("About {0}", AssemblyTitle);
            this.labelProductName.Text = AssemblyProduct;
            this.labelVersion.Text     = String.Format("Version {0}", Application.ProductVersion);
            this.lblRev.Location       = new Point(this.labelVersion.Left + this.labelVersion.Width + 10, this.labelVersion.Top);
            this.lblRev.Text           = string.Format("Rev. {0}", Adapter.AppRevision);
            this.labelCopyright.Text   = AssemblyCopyright;
            lblDevelopers.Text         = string.Format("{0} is developed by:", AssemblyTitle);
            Timer timer = new Timer {
                Interval = 100
            };

            timer.Tick += new EventHandler(timer_Tick);
            timer.Start();
            this.FormClosing += (v1, v2) => timer.Dispose();
        }
        public static Bitmap GetRandomLogo(Bitmap logo)
        {
            Bitmap bmp = new Bitmap(logo);

            if (mLogoRandomList.Count == 0)
            {
                List <int> numbers = Enumerable.Range(1, 7).ToList();

                int count = numbers.Count;

                for (int x = 0; x < count; x++)
                {
                    int r = Adapter.RandomNumber(0, numbers.Count - 1);
                    mLogoRandomList.Add(numbers[r]);
                    numbers.RemoveAt(r);
                }
            }

            switch (mLogoRandomList[0])
            {
            case 1:
                logo = ColorMatrices.ApplyColorMatrix(bmp, ColorMatrices.InverseFilter());
                break;

            case 2:
                logo = ColorMatrices.ApplyColorMatrix(bmp, ColorMatrices.GrayscaleFilter());
                break;

            case 3:
                logo = ColorMatrices.ApplyColorMatrix(bmp, ColorMatrices.GrayscaleFilter());
                logo = ColorMatrices.ApplyColorMatrix(bmp, ColorMatrices.InverseFilter());
                break;

            case 4:
                logo = ColorMatrices.ApplyColorMatrix(bmp, ColorMatrices.InverseFilter());
                logo = ColorMatrices.ApplyColorMatrix(bmp, ColorMatrices.SaturationFilter(Adapter.RandomNumber(100, 300)));
                break;

            case 5:
                logo = ColorMatrices.ApplyColorMatrix(bmp, ColorMatrices.InverseFilter());
                logo = ColorMatrices.ApplyColorMatrix(bmp, ColorMatrices.SaturationFilter(Adapter.RandomNumber(-300, -100)));
                break;

            case 6:
                logo = ColorMatrices.ApplyColorMatrix(bmp, ColorMatrices.SaturationFilter(Adapter.RandomNumber(150, 300)));
                break;

            case 7:
                logo = ColorMatrices.ApplyColorMatrix(bmp, ColorMatrices.SaturationFilter(Adapter.RandomNumber(-300, -150)));
                break;
            }

            mLogoRandomList.RemoveAt(0);

            return(logo);
        }
        private void timer_Tick(object sender, EventArgs e)
        {
            if (saturation > 400)
            {
                step = -20;
            }
            else if (saturation < 200)
            {
                step = 20;
            }

            saturation += step;

            Bitmap bmp = Resources.main;

            bmp          = ColorMatrices.ApplyColorMatrix(bmp, ColorMatrices.InverseFilter());
            bmp          = ColorMatrices.ApplyColorMatrix(bmp, ColorMatrices.SaturationFilter(-saturation * multiply));
            pbLogo.Image = bmp;
        }