animacja za pomocą Opacity

Odpowiedz Nowy wątek
2011-09-23 18:19
XYZ
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

Pozostało 580 znaków

2011-09-23 18:33
0

Timer.


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał

Pozostało 580 znaków

2011-09-23 18:35
XYZ
0

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

Pozostało 580 znaków

2011-09-23 18:42
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.


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał

Pozostało 580 znaków

2011-09-23 18:52
XYZ
0

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

Pozostało 580 znaków

2011-09-23 18:56
0

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


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał

Pozostało 580 znaków

2011-09-23 19:01
XYZ
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.

Pozostało 580 znaków

2011-09-23 19:01
XYZ
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.

Pozostało 580 znaków

2011-09-23 19:13
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

Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
edytowany 1x, ostatnio: xeo545x39, 2011-09-23 19:14

Pozostało 580 znaków

2011-09-23 19:29
XYZ
0

Nie działa mi :(

Pozostało 580 znaków

2011-09-23 20:55
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.

edytowany 2x, ostatnio: Signum, 2011-09-23 21:20

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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