我正在将Color类作为c++中非常基本的图形API的一部分。因此,我决定看一下Microsoft的.NET框架,并注意到它们的Color类具有HSB的功能。

然后,我开始进行研究以确定我是否应该在类提供HSB,HSL或HSV或全部。

因此,我对HSB,HSL,HSV有3个问题:

  • HSB与HSL是否相同?
  • 如果没有,为什么没有HSBL甚至HSBLV?
  • 我发现了许多计算这些值的方法,有人可以告诉我最快的方法吗?
  • 最佳答案



    不,HSB与HSV相同,但HSL不同。所有这些都用作表示RGB颜色的友好方式。维基百科上有关HSL和HSV的文章解释了使用彩色标记的区别:HSL and HSV
    基本上,HSB和HSL的色相相同,但“饱和度”取不同的值,“亮度”和“亮度”也不同。



    我不明白这一点。 HSB/HSV和HSL都可以代表任何RGB颜色。由于B和L的定义方式,因此不可能单独拥有它们。给定的HSB亮度和饱和度与固定的亮度相关。实际上,它们之间的转换非常容易。



    对于从RGB计算HSB,这里有一个类似的问题:Fast, optimized and accurate RGB <-> HSB conversion code in C那里有一个Java实现可能会有所帮助。有关在HSB/HSV和HSL之间进行转换的信息,请参见HSL vs HSB vs HSV

    关于c++ - HSB vs HSL vs HSV,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15668623/

    10-11 16:46