2009-06-26 8 views

Répondre

2

en utilisant la procédure HSVtoRGB trouvé here, vous pouvez brancher vos deux TrackBar contrôles au même gestionnaire d'événements utilisant ce code:

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: Voici la procédure corrigée puisque celle du lien esn't vraiment suivre les meilleures pratiques:

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 merci beaucoup. J'ai des problèmes et je reçois des erreurs parce que le code sur la page Web n'est pas .NET. pour ce qui suit: Private Und UnRGB (ByVal couleur comme OLE_COLOR, ByRef r, ByRef g, ByRef b) ------- il ne sait pas ce que OLE_COLOR est et pour les r, g et b, il dit Erreur \t \t Tous les paramètres doivent être tapés explicitement si l'un d'eux est explicitement tapé –

+0

maintenant je reçois Erreur L'opérateur 'And' n'est pas défini pour les types 'System.Drawing.Color' et 'Integer'. –

+1

Ha oui, la procédure dans le lien suppose que vous avez 'Option Explicit' off, je vais inclure le code pour le rendre plus facile –

1

Julien a une bonne réponse, mais cela viendra dans les recherches, donc beaucoup de liens aide toujours :-)

Bob Powell a aussi quelques HSL code dans son RGB and HSL Colour Space Conversions. Et, (celui-ci est en C#, donc probablement ne va pas aider beaucoup), Chris Jackson a un HSB code qui semble raisonnable. Le port vb.net qui était lié est, euh, notsogood, il a des problèmes avec l'option strict activé. Pas insurmontable, mais pas copypaste prêt non plus

Questions connexes