[ VerbatimBOT @ 13.05.2006. 14:20 ] @
| Pozdrav!
Imam problem pri pravljenju "fade" efekta startUp forme koja se pokreće. Napravio sam klasu:
Code:
class FadeEfekat
{
Form forma;
Timer tajmer;
public void main(Form frmForma)
{
tajmer = new Timer();
tajmer = new Timer();
forma = frmForma;
forma.Opacity = 0;
tajmer.Interval = 100;
tajmer.Tick += new EventHandler(tajmer_Tick);
tajmer.Enabled = true;
}
private void tajmer_Tick(object sender, EventArgs e)
{
if (forma.Opacity == 100)
tajmer.Enabled = false;
else
forma.Opacity += 5;
}
}
A u FormLoad metodi sam postavio sledeće:
Code:
private void Form1_Load(object sender, EventArgs e)
{
FadeEfekat f = new FadeEfekat();
f.main(this);
}
I to jednostavno ne radi! Ne primećuje se nikakav fade efekat. Jednostavno malo sačeka i onda odjednom postavi celu formu.
Jel ima neko neki predlog kako bi ovo moglo da se odradi? |
[ Oliver Klaćik @ 13.05.2006. 15:58 ] @
Ne možeš ništa raditi sa UI-jem dok se FormLoad event handler ne završi, jer forma nije ni prikazana do tada. Stavi lepo u main proceduri Opacity na nula, zatim Form.Show i potom tu odradi fade in.
[ VerbatimBOT @ 13.05.2006. 17:25 ] @
Ae ću probam!
Hvala!
[ VerbatimBOT @ 13.05.2006. 17:55 ] @
Neće da mi radi tako. Uradim kao što si rekao i neće da tera dalje posle forma.Show() metode.
Jel imaš neku alternativu?
[ hakiro @ 13.05.2006. 18:41 ] @
cudno
to bi trebalo da radi
da li si svestan da tvoja forma stigne do Opacity 100 za dve sekunde?
[ Oliver Klaćik @ 14.05.2006. 02:12 ] @
Code:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 myForm = new Form1();
myForm.Opacity = 0;
myForm.Show();
double i = 0;
while (i < 1)
{
myForm.Opacity = i;
i += 0.01;
System.Threading.Thread.Sleep(10);
}
Application.Run();
}
[ Deep|Blue @ 17.05.2006. 10:30 ] @
tebi se fade izvrsava samo ga ti ne primecujes :)
U biti, kod ti je ok, ali problem je u tome sto je procesor suvise okupiran podizanjem frejmvorka i aplikacije da ne stize da iscrta promene na tvojoj startup formi (koja bi u biti trebalo da predstavlja splash zar ne?)
resenje da forsitras iscrtacanje posle svake promene opacity svojstva, ili da startujes splash u odvojenoj niti sa visokim prioritetom, tako ce ona da odradi svoj fade bez obzira na ostale procese. ovo jeste direktnije resenje, al ti usporava podizanje aplikacije za taj fade efekat, a 2 sekunde nije malo kad startujes taj program non stop
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.