我用滚动条控制窗体背景色的色调和饱和度:
Private Sub tbHUE_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbHue.Scroll
Dim r, g, b As Integer
HSVtoRGB(r, g, b, tbHue.Value, tbSaturation.Value / 50, 255)
Form1.BackColor = Color.FromArgb(r, g, b)
Label1.Text = tbHue.Value
End Sub
Private Sub tbsaturation_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbSaturation.Scroll
Dim r, g, b As Integer
HSVtoRGB(r, g, b, tbHue.Value, tbSaturation.Value / 50, 255)
Form1.BackColor = Color.FromArgb(r, g, b)
Label2.Text = tbSaturation.Value
End Sub
我想知道除以50的目的是什么?
答案 0 :(得分:3)
如果你提到这个问题:implementing a trackbar that will change background color of form,HSVtoRGB程序需要:
这符合算法的意图,因为它指向维基百科版本作为参考,位于http://www.xtremevbtalk.com/showthread.php?t=302304。我没有校对实现以检查是否正确。
将从tbSaturation文本框获得的饱和度值除以50可以解释用户输入的0到50之间的值。您可能实际上想要除以100而不是允许0-100范围。
答案 1 :(得分:1)
这取决于滚动条的范围和HSVtoRGB的预期范围。
如果没有更大的上下文,我假设你的滚动条的范围是0到50,并且代码正在尝试规范化这些值,或者他们试图扩展组件。
答案 2 :(得分:0)
很难知道这个人的想法是什么,但结果是你会得到一种不那么“纯粹”的颜色(混合了更多的白色)。
有关详细信息,您可以查看conversion algorithm,其中也有很好的评论。