Реализация трекбар, который изменит цвет фона формы - PullRequest
1 голос
/ 26 июня 2009

Я хотел бы иметь трекбар в моей форме, который будет соответствовать оттенку цвета фона, с диапазоном от 1 до 360, и другой трекбар, который будет соответствовать насыщенности цвета фона в пределах диапазон от 1 до 50.

Ответы [ 2 ]

2 голосов
/ 26 июня 2009

Используя найденную процедуру HSVtoRGB здесь , вы можете подключить оба элемента управления TrackBar к одному и тому же обработчику событий и использовать этот код:

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

Редактировать: вот исправленная процедура, поскольку ссылка, приведенная в ссылке, не соответствует передовым методам:

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 голос
/ 26 июня 2009

У Жюльена хороший ответ, но он будет найден при поиске, поэтому всегда помогает множество ссылок: -)

Боб Пауэлл также имеет некоторый код HSL в своих преобразованиях цветового пространства RGB и HSL .

И, (это в c #, так что, вероятно, не очень поможет), у Криса Джексона есть код HSB , который выглядит разумным Порт vb.net, к которому был подключен, не очень хороший, у него есть проблемы с включенным параметром строго. Не непреодолимые, но не готовые к копированию пасты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...