Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

forma screen updating

[es] :: .NET :: forma screen updating

Strane: 1 2

[ Pregleda: 4066 | Odgovora: 28 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

anakin14

Član broj: 73683
Poruke: 862
*.dynamic.sbb.rs.



+133 Profil

icon forma screen updating12.04.2011. u 19:19 - pre 157 meseci
u vba je bio application.screenupdating true/false

kada hocete da sakrijete neki proces.

Kako to izvesti u VB .net?

Hteo sam da mi glavna forma ima oppacity na 70% ali da mi controle nemaju, i to sam izveo tako sto prvo zovem glavnu formu koja je prazna i ima opacity 70% a posle nje odmah zovem drugu formu koja je transparentna preko prve forme i na njoj su kontrole. To je jedini nacin da se izvede da forma bude poluprovidna a kontrole ne, medjutim prilikom startovanja hocu da izbegnem flashiranje zbog toga sto se forme pojavljuju jedna za drugom.]

kako da ovo izvedem?

puno hvala!!!
 
Odgovor na temu

mish_ns
Miloš Krstin

Član broj: 159930
Poruke: 1105
212.178.231.*



+18 Profil

icon Re: forma screen updating12.04.2011. u 19:35 - pre 157 meseci
Jesi probao ovo:

http://www.vbforums.com/showthread.php?t=596609

Javi jel uspelo.
Pozdarv
 
Odgovor na temu

anakin14

Član broj: 73683
Poruke: 862
*.dynamic.sbb.rs.



+133 Profil

icon Re: forma screen updating12.04.2011. u 19:44 - pre 157 meseci
ali to je za opacity 0 - da forma bude kompletno transparetna. meni treba da forma bude poluprovidna - opacity 70% a da controle ne budu.
 
Odgovor na temu

mish_ns
Miloš Krstin

Član broj: 159930
Poruke: 1105
212.178.231.*



+18 Profil

icon Re: forma screen updating12.04.2011. u 19:59 - pre 157 meseci
Hmm. A jesi probao da umesto 0 stavis 0.70. Jel to utice i na formu i na kontrole?
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: forma screen updating12.04.2011. u 22:02 - pre 157 meseci
Zeznuto je izvesti to sto hoces. Mozes ili preko API-a praviti per-pixel alpha ili raditi aplkaciju kao WPF pa iskljuciti border i staviti allowtransparency na true. Onda mozes da se zezas kako hoces (ali neces imati title bar i one dugmice za minimize, maximize i close, moraces ih sam praviti).
 
Odgovor na temu

anakin14

Član broj: 73683
Poruke: 862
*.dynamic.sbb.rs.



+133 Profil

icon Re: forma screen updating13.04.2011. u 00:39 - pre 157 meseci
Citat:
mish_ns: Hmm. A jesi probao da umesto 0 stavis 0.70. Jel to utice i na formu i na kontrole?


opacity u vb-u utice na sve, i na controle i na formu tako da je to nemoguce.

Citat:
Shadowed: Zeznuto je izvesti to sto hoces. Mozes ili preko API-a praviti per-pixel alpha ili raditi aplkaciju kao WPF pa iskljuciti border i staviti allowtransparency na true. Onda mozes da se zezas kako hoces (ali neces imati title bar i one dugmice za minimize, maximize i close, moraces ih sam praviti).


pa i ovako sam iskljucio border, nije mi potreban, hocu da simuliram full screen, ali opet nemoguce je staviti poluprovidnost na formu a controle na toj istoj formi da budu neprovidne.

moje pitanje je kako da na onaj nacin na koji sam izveo izbegnem da korisnik gleda crtanje jedne pa druge forme nego da se to preskoci i prikaze odjednom.
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: forma screen updating13.04.2011. u 07:24 - pre 157 meseci
Ne znam odgovor na tvoje konkretno pitanje, ali ono sto hocu da ti kazem je da jeste moguce ono sto si prvobitno hteo.


Prikačeni fajlovi
 
Odgovor na temu

anakin14

Član broj: 73683
Poruke: 862
*.dynamic.sbb.rs.



+133 Profil

icon Re: forma screen updating13.04.2011. u 11:09 - pre 157 meseci
@Shadowed

Da, to je upravo ono sto trazim, a u brzini citanja nisam video da di pricao o WPF aplikaciji.
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: forma screen updating13.04.2011. u 11:30 - pre 157 meseci
Dakle, ako ti nije problem da koristis WPF, a ne bi trebalo da bude - na toj slici ti je i primer kako da uradis (imas kod pokazan). Bitno je samo da boji dodas alfa deo. Na slici je malo odseceno, boja je #808080a0. Prve dve cifre su alfa u hex-u (dakle, ovo je 50% providno).
 
Odgovor na temu

anakin14

Član broj: 73683
Poruke: 862
*.dynamic.sbb.rs.



+133 Profil

icon Re: forma screen updating13.04.2011. u 15:58 - pre 157 meseci
ako moze samo jos jedno brzo pitanje posto vidim da radis sa WPF-om

kako da namestim da mi bude windowstate bude maximized, da nemam border, ali da mi forma ne prelazi preko taskbara. Znaci fakticki maximized forma ali ne fullscreen.
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: forma screen updating13.04.2011. u 16:53 - pre 157 meseci
Ne znam da li ces to moci. To nema veze sa WPF-om i uopste tvojim programom vec sa taskbar-om koji u toj situaciji pretpostavlja da applikacija hoce fullscreen pa se sam skloni.
 
Odgovor na temu

anakin14

Član broj: 73683
Poruke: 862
*.dynamic.sbb.rs.



+133 Profil

icon Re: forma screen updating13.04.2011. u 16:55 - pre 157 meseci
ne skloni se, glavna forma je transparentna pa se task bar vidi ispod, ali ga je aplikacija prekrila/
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: forma screen updating13.04.2011. u 18:34 - pre 157 meseci
Na to sam mislio, skloni se iza :)
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.static.amis.net.



+14 Profil

icon Re: forma screen updating16.04.2011. u 10:57 - pre 157 meseci
U wpf-u koristi SystemParameters.WorkArea, to ti vrati pravougaonik koji predstavlja korisnu povrsinu desktopa (fullscreen minus taskbar i dokovani prozori). U winformsu koristi Screen.WorkingArea. Postavi onda samo left, top, width i height tvog glavnog prozora na odgovarajuce parametre tog pravougaonika.
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

anakin14

Član broj: 73683
Poruke: 862
*.dynamic.sbb.rs.



+133 Profil

icon Re: forma screen updating17.04.2011. u 15:11 - pre 157 meseci
odlicno, to mi je trebalo.

Ali kako sad da obavestavam program o tome da sam pomerio taskbar da bi refreshovao kod kojim se on prilagodjava tom pravougaoniku.
Ono sto sam uspeo je da prilikom inicijalizacije pocetnog prozora da ga namestim kako treba, ali sta sad kada korisnik u toku rada programa pomera taskbar ili ga resize-uje?
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.evj-kabel.net.



+14 Profil

icon Re: forma screen updating17.04.2011. u 17:09 - pre 157 meseci
Za maksimizovane forme se okida Layout event kada se workingarea promeni, ali kao sto si napisao ne koristis maksimizovu formu.

Mislim da ne postoji nikakav direktan nacin da pratis promene radne povrsine. Probaj da se nakacis na evente kao sto su Moved, Resized, itd. pa vidi koji se okida kada pomeras taskbar. Ako ti nista ne pomogne napravi jednostavan thread koji proverava workingarea i ako se promenio okida sinhronizovani event (i obavezno Sleep( > 0) da ti ne pojede sve cikluse procesora).

I pazi na jos jednu stvar, a to je da ne zoves direktno iz moved/resized i slicnih eventova bilo sta sto pomera/resizuje formu, nego koristi nesto kao BeginInvoke(new Action( ()=> { Size = newsize; Location = newloc });)


if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

anakin14

Član broj: 73683
Poruke: 862
*.dynamic.sbb.rs.



+133 Profil

icon Re: forma screen updating19.04.2011. u 15:24 - pre 157 meseci
Code:

    Private Sub MainWindow_LayoutUpdated(sender As Object, e As System.EventArgs) Handles Me.LayoutUpdated
        w1.Left = SystemParameters.WorkArea.Left
        w1.Top = SystemParameters.WorkArea.Top
        w1.Height = SystemParameters.WorkArea.Height
        w1.Width = SystemParameters.WorkArea.Width

    End Sub

    Private Sub Window_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
        w1.Left = SystemParameters.WorkArea.Left
        w1.Top = SystemParameters.WorkArea.Top
        w1.Height = SystemParameters.WorkArea.Height
        w1.Width = SystemParameters.WorkArea.Width

    End Sub


interesantna stvar da mi promena kasni za jedno resizovanje taskbara.

Znaci kada startujemo aplikaciju, prozor se uglavi tacno kako treba
kada promenimo prvi put poziciju taskbara, nista se ne desava
kada promenimo drugi put poziciju taskbara , prozor se promeni u velicinu u koju je trebao prvi put da se promeni.
i tako dalje, uvek kasni za jednu "promenu"

a ne razumem cemu sluzi LAyoutupdated za maximizovane forme, jer cim je maximizovana taskbar je otisao ispod i nista ne moze da se promeni?
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.zaslon-telecom.si.



+14 Profil

icon Re: forma screen updating20.04.2011. u 08:41 - pre 157 meseci
Izgleda da se prvo se okida LayoutChanged pa tek onda azuriraju vrednosti u SystemParameters. Probaj sa ovim:

Code:

    Private Sub MainWindow_LayoutUpdated(sender As Object, e As System.EventArgs) Handles Me.LayoutUpdated
        BeginInvoke(New InvokeDelegate(AddressOf UpdateLayout))
    End Sub


    Private Sub UpdateLayout()
        w1.Left = SystemParameters.WorkArea.Left
        w1.Top = SystemParameters.WorkArea.Top
        w1.Height = SystemParameters.WorkArea.Height
        w1.Width = SystemParameters.WorkArea.Width
    End Sub


BeginInvoke bi trebalo da doda pozivanje UpdateLayout delegata na kraj message loopa.

Citat:
anakin14: a ne razumem cemu sluzi LAyoutupdated za maximizovane forme, jer cim je maximizovana taskbar je otisao ispod i nista ne moze da se promeni?

To je cudno, ako taskbar nije na autohide maksimizovana forma ne bi trebalo da je preko taskbara. Jel imas mozda TopMost=true ili sl?
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

anakin14

Član broj: 73683
Poruke: 862
*.dynamic.sbb.rs.



+133 Profil

icon Re: forma screen updating21.04.2011. u 12:23 - pre 157 meseci
Citat:
Boris B.: Izgleda da se prvo se okida LayoutChanged pa tek onda azuriraju vrednosti u SystemParameters. Probaj sa ovim:

Code:

    Private Sub MainWindow_LayoutUpdated(sender As Object, e As System.EventArgs) Handles Me.LayoutUpdated
        BeginInvoke(New InvokeDelegate(AddressOf UpdateLayout))
    End Sub


    Private Sub UpdateLayout()
        w1.Left = SystemParameters.WorkArea.Left
        w1.Top = SystemParameters.WorkArea.Top
        w1.Height = SystemParameters.WorkArea.Height
        w1.Width = SystemParameters.WorkArea.Width
    End Sub


BeginInvoke bi trebalo da doda pozivanje UpdateLayout delegata na kraj message loopa.


To je cudno, ako taskbar nije na autohide maksimizovana forma ne bi trebalo da je preko taskbara. Jel imas mozda TopMost=true ili sl?


tvoj code ne radi u WPF-u

posto jos ne poznajem wpf dobro probao sam da ga zamenim sa:
Code:

 Private Sub MainWindow_LayoutUpdated(sender As Object, e As System.EventArgs) Handles Me.LayoutUpdated
        w1.Dispatcher.BeginInvoke(New Action(AddressOf UpdateLayout))
    End Sub


    Private Sub UpdateLayout()
        w1.Left = SystemParameters.WorkArea.Left
        w1.Top = SystemParameters.WorkArea.Top
        w1.Height = SystemParameters.WorkArea.Height
        w1.Width = SystemParameters.WorkArea.Width
    End Sub

   


i opet radi isto, uvek kasni za jednu promenu

a sto se tice maximizovane forme, nije topmost ali cudna se stvar desava
kada se windowstate stavi na normal, i forma maksimizuje na dugme onda ne predje preko taskbara, ali kada se windowstate stavi na maximized a pritom iskljuce dugmici za minimize i maximize forma ode preko taskbara. Verovatno to odredjuje borderstyle, posto ja zelim da ga podesim na "none" a da mi pritom maximize form ne predje preko task bar-a

[Ovu poruku je menjao anakin14 dana 21.04.2011. u 16:18 GMT+1]
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.dynamic.isp.telekom.rs.



+14 Profil

icon Re: forma screen updating23.04.2011. u 11:11 - pre 157 meseci
Hmm, izgleda da se azuriranje systemparametars desi bas daleko od layoutchanged. Probaj ovo dole, sigurno radi:
Code (csharp):

        private void WindowLayoutUpdated(object sender, EventArgs e) { UpdateLayout(); }

        public void UpdateLayout()
        {
            new Thread(() =>
                       {
                           Thread.Sleep(100);
                           Dispatcher.Invoke(new Action(() =>
                                                             {
                                                                 Width = SystemParameters.WorkArea.Width;
                                                                 Height = SystemParameters.WorkArea.Height;
                                                                 Left = SystemParameters.WorkArea.Left;
                                                                 Top = SystemParameters.WorkArea.Top;
                                                             }));
                       }).Start();
        }
 


Prevedi samo u VB
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

[es] :: .NET :: forma screen updating

Strane: 1 2

[ Pregleda: 4066 | Odgovora: 28 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.