я хочу преобразовать RGB в HSL с помощью Delphi, мой код:
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);
//FROM: https://www.rapidtables.com/convert/color/rgb-to-hsl.html
//HSL: 60,2.5,60.6 <--correct Value
ShowMessage(Format('HSL: %.1f,%.1f,%.1f', [H, S * 100, L * 100])); //<---wrong Hue's value
end;
как я могу получить правильное значение оттенка? Спасибо.
Похоже, что функция UIConsts.RGBtoHSL представляет оттенок цвета как действительное число от 0 до 1. Если вам нужно значение от 0 до 360, вам нужно масштабировать его с коэффициентом 360:
Format('HSL: %.1f,%.1f,%.1f', [360 * H, S * 100, L * 100])
Я считаю ошибкой документации то, что в документации Embarcadero явно не указано соглашение, используемое этой функцией.