Solved

Confused Need Help With Code

Posted on 2006-11-04
9
232 Views
Last Modified: 2010-04-16
HI,
I am using the following code to have a form fade out to zero percent opacity, then fade right back into 100 Opacity when a button is pushed.  

I cant seem to shut it off after it fades back to 100 opactiy?

Also I need to change the form size to 200 by 200 using this code when the form is at 0 opacity

this.Size = new Size(200, 200);

But I am not sure where to put insert the code?


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
           
        }
       // private String imgName;
        private DateTime dt;
        private Timer t;
        private bool fadeOut = true;

        private void Form1_Load(object sender, EventArgs e)
        {
           
        }
     
        void t_Tick(object sender, EventArgs e)
        {
            TimeSpan ts = dt.Subtract(DateTime.Now);
            if (ts.TotalSeconds > 0)
            {
                if (fadeOut)
                {
                    if (this.Opacity > .0)
                    {
                        this.Opacity -= .01;
                    }
                    else
                    {
                        fadeOut = !fadeOut;
                    }
                }
                else
                {
                    if (this.Opacity < 1.0)
                    {
                        this.Opacity += .01;
                    }
                    else
                    {
                        fadeOut = !fadeOut;
                    }
                }
            }
            else
            {
                t.Stop();
                //this.Close(); // optional
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            dt = DateTime.Now.AddSeconds(100);
            t = new Timer();
            t.Tick += new EventHandler(t_Tick);
            t.Interval = 100;
            t.Start();
        }

    }
}
0
Comment
Question by:schenkp
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 4
9 Comments
 
LVL 3

Expert Comment

by:lizard450
ID: 17874669
I think this is what you want... ???  i'm failing to see why you need a timer... can you explain?


private bool falseIsDown = true;
        private void button1_Click(object sender, EventArgs e)
        {
            doFade();
        }

        private void doFade()
        {
            falseIsDown = !falseIsDown;
            double incrementAmount = .01;
            if(!falseIsDown)
            {
                incrementAmount = incrementAmount*-1;
            }
            double loopTimes = Math.Abs(1/incrementAmount);
            for (double a = loopTimes; a >= 0;a--)
                this.Opacity += incrementAmount;
            this.Size = new Size(200, 200);
        }

        void Form1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
        {
            doFade();
        }
0
 
LVL 3

Expert Comment

by:lizard450
ID: 17874680
of course don't forget to add   this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(Form1_KeyPress);
     to the initializecomponents thing
0
 

Author Comment

by:schenkp
ID: 17874685
It fades nice but how about having it come right back to 100% Opacity?
0
Salesforce Made Easy to Use

On-screen guidance at the moment of need enables you & your employees to focus on the core, you can now boost your adoption rates swiftly and simply with one easy tool.

 

Author Comment

by:schenkp
ID: 17874689
I would like it to fade then come right back just by clicking the button?
0
 
LVL 3

Expert Comment

by:lizard450
ID: 17874692
Meh... just thought id clean the code up a bit...

private int falseIsDown = 1;
        private void doFade()
        {
            falseIsDown = falseIsDown*-1;
            double incrementAmount = .01*falseIsDown;
            double loopTimes = Math.Abs(1/incrementAmount);
            for (double a = loopTimes; a >= 0;a--)
                this.Opacity += incrementAmount;
            this.Size = new Size(200, 200);
        }

        void Form1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
        {
            doFade();
        }
0
 

Author Comment

by:schenkp
ID: 17874694
Can you have it come right back to 100 opacity?
0
 
LVL 3

Accepted Solution

by:
lizard450 earned 500 total points
ID: 17874696
private void doFade()
        {
            int TimetoWait = 1000;
            int flipInt = -1;
            double incrementAmount = .01*flipInt;
            double loopTimes = Math.Abs(1/incrementAmount);
            for (double a = loopTimes; a >= 0;a--)
                this.Opacity += incrementAmount;
            this.Size = new Size(200, 200);
            Thread.Sleep(TimetoWait);
            incrementAmount = incrementAmount*flipInt;
            for (double a = loopTimes; a >= 0; a--)
                this.Opacity += incrementAmount;          
           
        }
0
 

Author Comment

by:schenkp
ID: 17874703
SWEET....

Thanks Bro
0
 
LVL 3

Expert Comment

by:lizard450
ID: 17874705
no prob
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Introduction This article series is supposed to shed some light on the use of IDisposable and objects that inherit from it. In essence, a more apt title for this article would be: using (IDisposable) {}. I’m just not sure how many people would ge…
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…

740 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question