为什么饱和度和色调的最大值分别为 240 和 239?

问题描述 投票:0回答:4

在 ColorDialog 中,为什么饱和度和色调的最大值分别为 240 和 239?它们对应什么?

vb.net winforms colors
4个回答
6
投票

“在 Windows 中,HSL 和 HSV 空间通常会重新映射到 0 到 240 之间的比例,以便可以用 32 位值表示颜色。”

请参阅 http://msdn.microsoft.com/en-us/library/aa511283.aspx

色相表示为色轮周围的角度,在本例中乘以 2/3 以保持在 240 度以下。最高值为 239,因为 240 = 0 就像指南针上的 360 度 = 0 度一样。


0
投票

最大值稍微压缩以适应 HDTV 更黑的黑色(等)。


0
投票

对应于 HSV 标度中的最大值:)。 240 可以被 2,3,4,5,6,8,10,12,15,16,20,24,30,40,60,80,120 等整除(我错过了什么吗?)。比 256 更适合调色板。

239 是因为 240 与 0 完全相同(因为它是一个圆)。


0
投票

简短回答

色调为 239 (240=0) 的原因只是因为使用了一个 int (8 位整数)作为色调值,这是过去时代的残余。

更长的答案

使用具有 240 个值而不是 360 个值的色调可以追溯到计算机没有数学协处理器的时候。如果没有数学协处理器,在浮点中执行任何操作都是一个重大的性能瓶颈。此外,CPU 速度低、RAM 有限等等……当时,为了提高效率,人们做了很多工作,但在今天可能没有意义。

请记住,我们谈论的是几十年之前,手持式计算机可以连接到世界上所有的知识,其中所述手持式计算机也恰好兼作电话、静态相机、摄像机、世界地图您当前的位置、音乐播放器、电视、文字处理器、语音文本翻译器、电传打字机、放大镜和亮度可调手电筒。

😎

早在 80 年代末/90 年代初,几乎所有事情都是通过 8 位整数数学完成的,并且只要可行,就避免执行 8 位整数数学以外的任何操作。

将 360 减少到 240 可以将该值保持在 8 位,并且优点是它恰好是 360 的 2/3。更不用说颜色本身实际上没有“角度”(请参阅附注)——它只是一个约定,使人类可以轻松调整颜色以适应。

由于 RGB 显示器中有三种原色,HSL 会相应地进行分解。如果您将 sRGB 视为一个“立方体”,其中一个角为黑色,一个角为白色,那么您就有 6 个角作为全饱和度的最大值,例如 #f00 表示红色,#0ff 表示浅绿色。

HSL 不是一种感知上统一的颜色模型 - 它只是一种让用户“直观”进行颜色调整的低技术方法。

旁注

颜色(色调)并不以“角度”的形式存在。颜色实际上并不真实,它只是一种感知。可见光有不同的波长,从长于 700 nm(红色)到短于 400 nm(蓝色)。颜色的感觉是大脑的感知功能。

尽管如此,将色调感知编码为圆形使其相当直观。因此,在任何将颜色值定义为角度的应用程序中,这纯粹是为了方便而构造的。

注意:这个答案与我在这个类似问题中的答案类似,为了完整性而发布在此处。

© www.soinside.com 2019 - 2024. All rights reserved.