Hi liebe Community,
ich habe das Vorhaben, einen sanften Farbwechsel zu programmieren.
Dazu habe ich eine Test-Anwendung programmiert, welche mir einen sanften Farbwechsel von weiß zu Blau anzeigt.
Mein Problem ist dort, dass es mir nicht schnell genug geht.
Ich verwende Timer, welche jedoch schon auf 1ms Interval gestellt sind...
Mein Code:
Mir fällt nur noch das Ändern des Faktors zur Addition bzw. Subtraktion ein, wobei es dort wieder Probleme geben könnte, sobald der Farbwert die 255 übersteigt...
Wie könnte man dies sonst noch beschleunigen?
ich habe das Vorhaben, einen sanften Farbwechsel zu programmieren.
Dazu habe ich eine Test-Anwendung programmiert, welche mir einen sanften Farbwechsel von weiß zu Blau anzeigt.
Mein Problem ist dort, dass es mir nicht schnell genug geht.
Ich verwende Timer, welche jedoch schon auf 1ms Interval gestellt sind...
Mein Code:
VB.NET-Quellcode
- Public Class Form1
- Private Sub PB_MouseEnter(sender As Object, e As EventArgs) Handles PB.MouseEnter
- Timer_Out.Stop()
- Timer_In.Start()
- End Sub
- Private Sub PB_MouseLeave(sender As Object, e As EventArgs) Handles PB.MouseLeave
- Timer_In.Stop()
- Timer_Out.Start()
- End Sub
- Dim ColorIn As Color = Color.FromArgb(50, 152, 254) 'blau
- Dim ColorOut As Color = Color.FromArgb(255, 255, 255) 'weiß
- Private Sub Timer_Out_Tick(sender As Object, e As EventArgs) Handles Timer_Out.Tick
- 'blau -> weiß
- Dim R As Integer = PB.BackColor.R
- Dim G As Integer = PB.BackColor.G
- Dim B As Integer = PB.BackColor.B
- If Not R = ColorOut.R Then PB.BackColor = Color.FromArgb(R + 1, G, B)
- If Not G = ColorOut.G Then PB.BackColor = Color.FromArgb(R, G + 1, B)
- If Not B = ColorOut.B Then PB.BackColor = Color.FromArgb(R, G, B + 1)
- If PB.BackColor.R = R And PB.BackColor.G = G And PB.BackColor.B = B Then Timer_Out.Stop()
- End Sub
- Private Sub Timer_In_Tick(sender As Object, e As EventArgs) Handles Timer_In.Tick
- 'weiß -> blau
- Dim R As Integer = PB.BackColor.R
- Dim G As Integer = PB.BackColor.G
- Dim B As Integer = PB.BackColor.B
- If Not R = ColorIn.R Then PB.BackColor = Color.FromArgb(R - 1, G, B)
- If Not G = ColorIn.G Then PB.BackColor = Color.FromArgb(R, G - 1, B)
- If Not B = ColorIn.B Then PB.BackColor = Color.FromArgb(R, G, B - 1)
- If PB.BackColor.R = R And PB.BackColor.G = G And PB.BackColor.B = B Then Timer_In.Stop()
- End Sub
- End Class
Mir fällt nur noch das Ändern des Faktors zur Addition bzw. Subtraktion ein, wobei es dort wieder Probleme geben könnte, sobald der Farbwert die 255 übersteigt...
Wie könnte man dies sonst noch beschleunigen?
Dieser Beitrag wurde bereits 11 mal editiert, zuletzt von „TRiViUM“ ()