2009-06-26 14 views

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 
+0

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 –

+0

jetzt bekomme ich Fehler Operator 'And' ist nicht für die Typen 'System.Drawing.Color' und 'Integer' definiert. –

+1

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 –

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