na wzór jn ?
Kod: Zaznacz cały
function KonwertujRGBnaHSV(RGB : TRGB) : THSV;
var
temp : integer;
begin
temp := MIN(MIN(RGB.red, RGB.green), RGB.blue);
// Obliczanie składowej Value
Result.value := MAX(MAX(RGB.red, RGB.green), RGB.blue);
// Zmienna TEMP jest teraz najmniejszą składową, a zmienna Result.value największą składową
// Obliczanie składowej HUE
if temp = Result.value then
Result.hue := 0
else begin
if RGB.red=Result.value then
Result.hue := 0 + ((RGB.green-RGB.blue)*60 div (Result.value-temp));
if RGB.green=Result.value then
Result.hue := 120 + ((RGB.blue-RGB.red)*60 div (Result.value-temp));
if RGB.blue=Result.value then
Result.hue := 240 + ((RGB.red-RGB.green)*60 div (Result.value-temp));
end;
if Result.hue<0 then
Result.hue := Result.hue+360;
// Obliczanie składowej SATURATION
if (Result.value=0) then
Result.saturation := 0
else
Result.saturation := (Result.value-temp)*100 div Result.value;
// Obliczanie składowej VALUE
Result.value := (100*Result.value) div 255;
end;