|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2024/5/6 21:55:59 |
标题: |
请教颜色问题:RGB 转 HSL,Hue 值不正确 |
浏览:202 |
|
加入我的收藏 |
楼主: |
代码如下: 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);
//https://www.rapidtables.com/convert/color/rgb-to-hsl.html //以上网址可得到 HSL: 60,2.5,60.6 <--正确值 ShowMessage(Format('HSL: %.1f,%.1f,%.1f', [H, S * 100, L * 100])); //<---错误 Hue 值:0.2 end;
请问各位高手,Hue 还要怎么计算,才能与上面网站算出来的一致?
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚? |
作者: |
|
2024/5/7 1:10:09 |
1楼: |
那就看你的 RGBtoHSL 这个函数里面是怎么回事了。
----------------------------------------------
-
|
作者: |
|
2024/5/7 8:21:47 |
2楼: |
已解决,解决方法请移步我在StackOverflow的同题提问: https://stackoverflow.com/questions/78437186/delphi-rgb-to-hsl-incorrect/78437267#78437267
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
|
作者: |
|
2024/5/7 17:07:12 |
3楼: |
procedure TForm1.Button1Click(Sender: TObject); var H, S, L: Single; R, G, B: Byte; alc: TAlphaColor; begin R := Byte( StrToInt(Edit1.Text) ); G := Byte( StrToInt(Edit2.Text) ); B := Byte( StrToInt(Edit3.Text) ); alc := MakeColor(R, G, B, 255); RGBtoHSL(alc, H, S, L); Edit4.Text :=FloatToStr( 360 * H ); Edit5.Text :=FloatToStr( S * 100 ); Edit6.Text :=FloatToStr( L * 100 ); end;
此帖子包含附件:
大小:52.0K |
----------------------------------------------
-
|
作者: |
|
2024/5/8 17:41:11 |
4楼: |
// ---------- // 把TAlphaColor转换为HSL void __fastcall AlphaColorToHSL(TAlphaColor aColor, float &fH, float &fS, float &fL) { // void __fastcall RGBtoHSL(System::Uitypes::TAlphaColor RGB, float &H, float &S, float &L); RGBtoHSL(aColor, fH, fS, fL);
fH = fH * 360.0; // 其值在0-1.0之间,所以要转换 fS = fS * 100.0; // 其值在0-1.0之间,所以要转换 fL = fL * 100.0; // 其值在0-1.0之间,所以要转换 }
----------------------------------------------
-
|
|