Dissolvenza

martedì 17 maggio 2005 - 13.25

Shadow Profilo | Junior Member

Buongiorno a tutti,
vorrei fare in modo che la maschera di apertura del mio sfw compaia in dissolvenza. In particolare ho cercato di incrementare la proprietà opacity del form sia con un ciclo di for a step piccoli (per rendere apprezzabile l'effetto) sia associata ad un timer ma senza mai riuscirci; potete scrivermi un paio di righe di codice che facciano al caso mio?

Grazie

alextyx Profilo | Expert

Questa Splash form si porta da opacity=0 (settata in fase di progettazione), fino a opacity 1, poi ne fa comparire un'altra, la FrmStart, anch'essa a opacity=0 e via via si dissolve, contemporaneamente opacizzando la FrmStart e rivelandola. Inoltre cambia delle diciture in una label dando un messaggio diverso nella fasse di dissolvenza, rispetto a quello in cui si opacizza!
Per il timer, l'intervallo settalo a gusto tuo!
Buon lavoro.

Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick

Me.Label1.Text = " A.E.A. srl presenta GIN.net"
Me.Opacity += 0.05
If Me.Opacity >= 1 Then
Me.Timer1.Stop()
Me.Timer2.Start()
End If

End Sub

Private Sub Timer2_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer2.Tick

GIN.FStart.Visible = True
Me.Label1.Text = "su tecnologia Microsoft Framework.NET"
Me.Opacity -= 0.05
FStart.Opacity += 0.05

If Me.Opacity <= 0.2 Then
Me.Timer2.Stop()
FStart.Opacity = 1
Me.Close()
Me.Dispose()
End If
End Sub

AntCiar Profilo | Expert

Ciao. Ho ciò che ti serve.

Come prima cosa inserisci nella form da dissolvere un controllo di tipo Timer
Dichiara poi al di fuori di ogni funzione una variabile booleana

Private ApriDiss As Boolean

Successivamente crea l'evento tick del timer e piazzaci questo codice:

Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If ApriDiss = True Then
If Me.Opacity < 1 Then
Me.Opacity = Me.Opacity + 0.01
Application.DoEvents()
Else
Me.Timer1.Stop()
End If
Else
If Me.Opacity > 0 Then
Me.Opacity = Me.Opacity - 0.01
Application.DoEvents()
Else
Me.Timer1.Stop()
Me.Close()
End If
End If
End Sub

Crea una sub "ApriIndissolvenza" e piazzaci questo codice per aprire la form in dissolvenza
Me.ApriDiss = True
Me.Opacity = 0
Me.Timer1.Interval = 1
Me.Timer1.Start()

Crea una sub "ChiudiIndissolvenza" e piazzaci questo codice per Chiudere la form in dissolvenza
Me.ApriDiss = False
Me.Opacity = 1
Me.Timer1.Interval = 1
Me.Timer1.Start()

Per la velocità della dissolvenza puoi interagire su due cose:
- Il Timer.Interval: questo lo puoi settare con valori interi superiori o uguali a 1. Valori più grandi = tempo più lungo
- il valore 0.01 che viene aggiunto o sottratto: puoi cambiarlo a tuo piacere. Quello che ti ho messo fa in modo da non far andare a scatti la dissolvenza

ciao cristian

poi all'occorrenza chiami le due sub a seconda quello che defi fare

Brainkiller Profilo | Guru

Non sarai riuscito ad ottenere l'effetto perchè se esegui il ciclo all'interno del Thread corrente, viene bloccato e non riesci a vedere l'animazione.
Più correttamente come dice Christian usa un Timer oppure un Thread.

ciao
david

Shadow Profilo | Junior Member

Ha funzionato! Grazie infinite.
Shadow
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5