Jak przekonwertować HSB na RGB
Mam jedną DelphiProjekt XE2 zmienićLabel01 Font Color
za pomocąTimer04
. Napisałem więc następujące kody:
procedure TMainForm.FormCreate(Sender: TObject);
begin
Timer04.Enabled := true;
end;
..
..
..
..
..
procedure TMainForm.Timer04Timer(Sender: TObject);
var
StartColor, RedColor, GreenColor, BlueColor: integer;
begin
StartColor := ColorToRGB(Label01.Font.Color);
RedColor := GetRValue(StartColor);
GreenColor := GetGValue(StartColor);
BlueColor := GetBValue(StartColor);
if RedColor <= 251 then Inc(RedColor, 1) else RedColor := 1;
if GreenColor <= 252 then Inc(GreenColor, 2) else GreenColor := 2;
if BlueColor <= 253 then Inc(BlueColor, 3) else BlueColor := 3;
Label01.Font.Color := RGB(RedColor, GreenColor, BlueColor);
end;
Te kody działają idealnie.Label01 Font Color
zmiany między różnymi kolorami.
Teraz próbuję to zaimplementowaćLabel02 Color
zostanie naprawiony (powiedzmy Zielony), a wartość jasności wzrośnie z0 do100. Jeśli wartość sięga100 zostanie zmniejszona do0 i będzie ciągły do pętli.
W moim przypadku wybrałemHUE=135
, SATURATION=85
iBRIGHTNESS=50
. WartośćBRIGHTNESS
zostanie zwiększona z50 do100 a następnie zostanie zmniejszona z100 do0 i będzie kontynuowane. Ale problem polega na tym, że takiego nie maFunction
dostępne do konwersjiHSB
doRGB
i odwrotnie wDelphi XE2
. Gooled to. Ale znalazłem cośFunction
tak jakHSBToRGB
. Tylko kilkaDelphi Unit
jest dostępny. Przeczytałem ich informacje i odkryłem, że każdy ma jakieś błędy.