Ik probeer een procedure te maken voor de RGBHSVUtils-bibliotheek, volgens RGBHSLUtils, om een TColor type als invoerparameter te nemen. Ik liep echter tegen een probleem aan
Procedure afgeleid van Color Lib v2.0.2.
Code:
procedure RGB2HSVRange(RGB: TColor; var H: Word;var S,V: byte);
var
Delta, Min, H1, S1: real;
R, G, B: byte;
begin
R := GetRValue (RGB) / 255;
G := GetGValue (RGB) / 255;
B := GetBValue (RGB) / 255;
h1 := h;
s1 := s;
// Min := MinIntValue([R, G, B]);
Min := R;
if Min > G then
Min := G;
if Min > B then
Min := B;
// V := MaxIntValue([R, G, B]);
V := R;
if V < G then
V := G;
if V < B then
V := B;
Delta := V - Min;
if V = 0.0 then S1 := 0 else S1 := Delta / V;
if S1 = 0.0 then
H1 := 0
else
begin
if R = V then
H1 := 60.0 * (G - B) / Delta
else
if G = V then
H1 := 120.0 + 60.0 * (B - R) / Delta
else
if B = V then
H1 := 240.0 + 60.0 * (R - G) / Delta;
if H1 < 0.0 then H1 := H1 + 360.0;
end;
h := round(h1);
s := round(s1*255);
end;
fout:
[Error] RGBHSVUtils.pas(232): Incompatible types: 'Byte' and 'Extended'
Hoe kan ik die formule correct uitvoeren of moet ik deze veranderen in real type? Maar daar is het vergelijkbaar.
Bookmarks