【问题标题】:purpose of dividing saturation / 50 and hue / 50?划分饱和度 / 50 和色调 / 50 的目的是什么?
【发布时间】:2009-08-18 04:41:22
【问题描述】:

我正在使用滚动条控制表单背景色的色调和饱和度:

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 的目的是什么?

【问题讨论】:

    标签: vb.net winforms


    【解决方案1】:

    如果您指的是这个问题:implementing a trackbar that will change background color of form,HSVtoRGB 程序需要:

    • 介于 0.0 和 1.0 之间的饱和度值
    • 一个介于 0.0 和 1.0 之间的值
    • 0 到 360 之间的色调值

    这与算法的意图是一致的,因为它指向维基百科版本作为其参考,在http://www.xtremevbtalk.com/showthread.php?t=302304。不过,我没有校对实现以检查正确性。

    将从 tbSaturation 文本框中获得的饱和度值除以 50 可以解释用户输入的介于 0 和 50 之间的值。您实际上可能希望除以 100 以允许 0-100 范围。

    【讨论】:

    • 顺便说一句,我希望该范围反映 colordialog 中规定的实际范围,即 0 到 240
    【解决方案2】:

    这取决于滚动条的范围和 HSVtoRGB 的预期范围。

    如果没有更多的上下文,我会假设您的滚动条的范围是 0 到 50,并且代码正在尝试规范化值或者它们正在尝试缩放组件。

    【讨论】:

    • 色相升到 360 没有错误,饱和度升到 50 没有错误
    【解决方案3】:

    很难知道进行除法的人在想什么,但结果是你会得到一种不那么“纯”的颜色(混入了更多的白色)。

    有关更多信息,您可能需要查看conversion algorithm,它也有很好的 cmets。

    【讨论】:

      猜你喜欢
      • 2022-12-25
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 2015-02-21
      • 2011-05-17
      • 2014-07-09
      • 2019-11-26
      • 2014-07-05
      相关资源
      最近更新 更多