Ich möchte eine Trackbar auf meinem Formular haben, die dem HUE der Farbe des backgruond entsprechen wird, einen Bereich von 1 bis 360 gegeben, und eine andere Trackbar, die entsprechen wird zur Sättigung der Farbe des backgruond, in einem Bereich von 1 bis 50.Implementieren einer Trackbar, die Hintergrundfarbe des Formulars ändern wird
1
A
Antwort
2
Mit dem HSVtoRGB
Verfahren gefunden here, können Sie beide TrackBar
Kontrollen auf den gleichen Event-Handler und verwenden diesen Code Haken:
Private Sub tbHUE_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbHUE.Scroll, tbSaturation.Scroll
Dim r, g, b As Integer
HSVtoRGB(r, g, b, tbHUE.Value, tbSaturation.Value/50, 255)
BackColor = Color.FromArgb(r, g, b)
End Sub
Edit: Hier ist das korrigierte Verfahren seit der in der Verbindung tun esn't wirklich Best Practices folgen:
Private Sub HSVtoRGB(ByRef Red As Integer, ByRef Green As Integer, ByRef Blue As Integer, ByVal Hue As Double, ByVal Sat As Double, ByVal Value As Integer)
Dim i As Integer
Dim f As Double, p As Double, q As Double, t As Double
If Sat = 0 Then
Red = Value
Green = Value
Blue = Value
Exit Sub
End If
i = CInt(Hue) \ 60
Hue = Hue/60
f = Hue - i
p = Value * (1 - Sat)
q = Value * (1 - Sat * f)
t = Value * (1 - Sat * (1 - f))
Select Case i
Case 0
Red = Value
Green = CInt(t)
Blue = CInt(p)
Case 1
Red = CInt(q)
Green = Value
Blue = CInt(p)
Case 2
Red = CInt(p)
Green = Value
Blue = CInt(t)
Case 3
Red = CInt(p)
Green = CInt(q)
Blue = Value
Case 4
Red = CInt(t)
Green = CInt(p)
Blue = Value
Case 5
Red = Value
Green = CInt(p)
Blue = CInt(q)
End Select
End Sub
1
Julien eine gute Antwort, aber dies bei der Suche wird kommen, so viele Links hilft immer :-)
Bob Powell hat auch einige HSL Code in seinem RGB and HSL Colour Space Conversions.
Und, (das ist in C# so wird wahrscheinlich nicht so viel helfen), Chris Jackson hat einige HSB code, die vernünftig aussieht. Der vb.net-Port, der verlinkt wurde, ist, ähm, nicht gut, es hat Probleme mit der Option strict only. Nicht unüberwindbar, aber nicht Copypaste bereit entweder
Verwandte Themen
- 1. ändern Hintergrundfarbe des Formulars mit Hexadezimal-Code
- 2. Größe des Formulars ändern - FormBorderStyle
- 3. Kann die Hintergrundfarbe des Schwebes nicht ändern
- 4. Wie wird die Hintergrundfarbe des Stapels eingestellt?
- 5. Inhalt des übermittelten Formulars beim Einreichen ändern
- 6. jquery ändern url des Formulars submit
- 7. die Hintergrundfarbe ändern
- 8. Wie Hintergrundfarbe des Android-Standard-Alarmdialogfelds ändern
- 9. erlaubt dem Benutzer Größe Trackbar zu ändern
- 10. WPF Hintergrundfarbe einer Combobox ändern
- 11. Feld des Formulars nicht anzeigen, wenn die Aktion bearbeitet wird
- 12. ändern Hintergrundfarbe des Layouts in Android
- 13. Android: Ändern der Hintergrundfarbe des Fragments
- 14. Verhindern, dass Benutzer die Größe des Fensters/Formulars ändern
- 15. Wie ändere ich die Hintergrundfarbe des Infobereichs in einer ImageCardView?
- 16. Hintergrundfarbe des Datagrid-Headers in Silverlight ändern
- 17. Ändern Hintergrundfarbe des Körpers mit Konsole
- 18. Sorted List ändern Hintergrundfarbe
- 19. MVVM ändern Hintergrundfarbe des Gitters auf Klick
- 20. Ändern ActionBarSherlock Hintergrundfarbe
- 21. Wie die Infofenster Hintergrundfarbe ändern
- 22. Wie Trackbar wie dieses Bild zu implementieren - Android?
- 23. Ändern Sie die Hintergrundfarbe einer Zeile in einer JTable
- 24. Back-End-Validierung des Formulars wird ignoriert
- 25. HUE einer Bitmap ändern, aber Hintergrundfarbe beibehalten?
- 26. Hintergrundfarbe einer bestimmten Zeile in slickgrid ändern?
- 27. Ändern Sie die Hintergrundfarbe einer WPF editierbaren ComboBox programmgesteuert
- 28. Wie die Hintergrundfarbe einer möglichen Übereinstimmung in Eclipse ändern
- 29. Ändern Sie den Link nach dem Senden des Formulars (ASP)
- 30. Java ändern Schaltfläche Hintergrundfarbe
julien vielen Dank. Ich habe Probleme und bekomme Fehler, weil der Code auf der Webseite nicht .NET ist. für die folgenden: Private Sub UnRGB (ByVal Farbe als OLE_COLOR, ByRef r, ByRef g, ByRef b) ------- es weiß nicht, was OLE_COLOR ist und für die r, g und b heißt es Fehler \t \t Alle Parameter müssen explizit eingegeben werden, wenn einer von ihnen explizit getippt wird –
jetzt bekomme ich Fehler Operator 'And' ist nicht für die Typen 'System.Drawing.Color' und 'Integer' definiert. –
Ha ja, die Prozedur in der Verknüpfung geht davon aus, dass Sie "Option Explicit" ausgeschaltet haben, ich werde den Code einfügen, um es einfacher zu machen –