You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi中RGB转HSL色调值错误,如何获取正确Hue值?

Delphi中RGB转HSL获取正确Hue值的解决方法

你的问题出在对Delphi RGBtoHSL函数返回值范围的理解上:该函数返回的H(色相)值是0到1之间的浮点数,代表0°到360°的比例,而你参考的在线工具输出的是0-360的角度值,因此需要将返回的H值乘以360才能得到符合预期的结果。

修改后的代码如下:

uses 
  System.UIConsts;
procedure TForm1.Button3Click(Sender: TObject);
var
  H, S, L: Single;
begin
  var R := 157;
  var G := 157;
  var B := 152;

  var alc := MakeColor(R, G, B, 255);

  RGBtoHSL(alc, H, S, L);

  // 将H值转换为0-360的角度值,与在线工具输出格式匹配
  ShowMessage(Format('HSL: %.1f,%.1f,%.1f', [H * 360, S * 100, L * 100]));
end;

运行这段代码后,输出的H值会接近你预期的60,和在线工具计算的结果一致。

补充说明:当饱和度S非常低(如本例中约2.5%)时,色相的视觉意义很弱,因为颜色已经接近灰度,但函数仍会返回对应的比例值,转换后依然是正确的角度值。

内容的提问来源于stack exchange,提问作者Frank.Wu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:04:53