animacja za pomocą Opacity

0

Hej.

Jak zrobić animacja za pomocą Opacity, żeby na samym starcie programu i przy zamykaniu. Program uruchamia się od 0% Opacity, a kończy na 100% Opacity w czasie 3s. I tak samo przy zamykaniu, tylko, że w drugą stronę od 100% do 0% w ciągu 3s.

Jest na to jakiś sposób?
Czekam na wasze odpowiedzi.

Pozdrawiam.
XYZ

0

Timer.

0

A tak więcej, bo mi to mało mówi? :(
Chodzi mi jak to zrobić?

0

Yhh.. Wstawiasz timer'a sobie i dajesz mu np. Interval = 30, a w jego evencie onElapsed czy tam onTimer wstaw zwiększenie opacity np. 2 lub 1 % swojej formy. Próbuj z różnymi wartościami to uzyskania pożądanego efektu. To samo tylko z - przy zamykaniu.

0

A co wstawić w tym evencie? Chodzi mi o fragment kodu, a jeszcze jedno pytanie, do tego wystarczy jeden Timer?

0

Przecież ci napisałem, że co wstawić w evencie.. Przeczytaj mojego posta jeszcze raz. Tak starczy jeden Timer.

0

Ale co mam wstawić w kodzie, żeby startował od 0% do 100% przy uruchamianiu. A przy zamykaniu odwrotnie. Na razie stanąłem na evencie i nie mam pojęcia co mam wpisać w tym zdarzeniu.

0

Ale co mam wstawić w kodzie, żeby startował od 0% do 100% przy uruchamianiu. A przy zamykaniu odwrotnie. Na razie stanąłem na evencie i nie mam pojęcia co mam wpisać w tym zdarzeniu.

0

Nie dość, że double post, to jeszcze mówisz, że nie wiesz co masz zrobić. NAPISAŁEM wcześniej ci dokładnie co masz wstawić do event'a. Widać, że czekasz na gotowy kod...

// w evencie onTimer: (dla uruchamiania i do zamykania ustaw sobie jakąś zmienną prywatną formy np. int'a i 1 to otwieranie 0 - zamykanie (domyślnie zamykanie)
if (this.opacityFlag == 1)
{
	if (this.Opacity != 100)
		this.Opacity += 2
	else 
		Timer1.Enabled = false;
}
else if (this.opacityFlag == 0)
	if (this.Opacity != 0)
		this.Opacity -= 2;
	else
		Timer1.Enabled = false;
// poza tym włączasz Timer'a przy FormLoad albo FormClosing
0

Nie działa mi :(

0

Kiedyś potrzebna mi była taka funkcjonalność w moim programie, ja to zrobiłem za pomocą jednej metody:

        delegate void FadeCompletedCallback();
        void Fade(int interval, double step, double destOpacity, FadeCompletedCallback fadeCompleted)
        {
            System.Threading.Timer timer = null;
            AsyncOperation aoAsync = AsyncOperationManager.CreateOperation(null);

            timer = new System.Threading.Timer(delegate
            {
                if (Opacity < destOpacity)
                {
                    aoAsync.Post(delegate
                    {
                        Opacity += (Opacity + step) > destOpacity ? destOpacity - Opacity : step;
                    }, null);
                }
                else if (Opacity > destOpacity)
                {
                    aoAsync.Post(delegate
                    {
                        Opacity -= (Opacity - step) < destOpacity ? Opacity - destOpacity : step;
                    }, null);
                }
                else if (Opacity == destOpacity)
                {
                    timer.Dispose();
                    if (fadeCompleted != null)
                    {
                        aoAsync.Post(delegate
                        {
                            fadeCompleted();
                        }, null);
                    }
                }
            }, null, 0, interval);
        }

Część przerobiłem teraz "z ręki", w razie jakby coś nie działało to pisz.

0

Możesz wstawić ten kod do projektu i wrzucić na forum, bo nie działa mi, to. :(

0

"Samochód mi się popsuł, jak go naprawić?"

Masz podane wszystko jak na tacy....
Co Ci nie działa? Może by tak jakieś szczegóły?? Nie jestem wróżbitą.

0

Podkreśla mi błędy na czerwono: Create i Global. Jak byś mógł do projektu to wstawić to bym sobie to porównał i zobaczył czego nie działa.

0
XYZ napisał(a)

Podkreśla mi błędy na czerwono: Create i Global. Jak byś mógł do projektu to wstawić to bym sobie to porównał i zobaczył czego nie działa.

Musisz dodać przestrzeń nazw, bodajże System.ComponentModel. A co do Global to było niepotrzebne, już poprawiłem i powinno działać.

0

Po dodaniu tego: using System.ComponentModel; nadal Create podkreśla na czerwono.

0

Można też pofatygować się samemu i zobaczyć co ciekawego siedzi sobie statycznie w klasie AsyncOperationManager. Ano, zamiast Create siedzi CreateOperation.. Kod pisałem częściowo z pamięci, stąd trochę pomyłek.

0

Brak błędów, ale nie ma takiego efektu jak chciałem, uruchamia i zamyka się tak samo jak wcześniej. :(

0

Kiedy i jak wywołujesz metodę Fade?

0

Chyba tego nie potrafię zrobić. :(

0
        public void fade()
        {

        }

Zrobiłem coś takiego i stanąłem. :(

0

Pomorze mi ktoś tą metodę zrobić? I gdzie ja mam ją wstawić?

0

Ja bym proponował Ci najpierw jakiś kurs programowania w C# (na centrumxp.pl jest dobry) bo nie masz zielonego pojęcia nawet jak wywołać metodę...

0

Skorzystam, tylko ten program musze skonczyc, jeszcze dzisiaj do póînocy. A to jest akurat ostatnia rzecz. :(

0

Ustaw Opacity dla Twojej formy na 0%. Wygeneruj dla niej zdarzenie Load, i wklej tam to:

Fade(10, // interwał pojawiania się\zanikania formy w milisekundach (czym większy, tym animacja będzie wolniejsza)
     0.02, // wartość określająca o ile zmniejszać\zwiększać przezroczystość w każdym kroku
     1, // docelowa wartość przezroczystości
     delegate // metoda która będzie wywołana po zakończeniu "animacji" (możesz tu dać null jeśli Ci to niepotrzebne)
     {
          MessageBox.Show("Hello!");
     });
0

Przy uruchamianiu programu działa, ale nie działa przy moim buttonie Zamknij, gdzie zamyka aplikacje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1