这是hsv转换到rgb的算法:
s/=255
if s=0(s是一个从0到1的一个小数)
r=g=b=v(r,g,b,v是byte型的)
else
h/=60;(h是0到360的一个值)
i=integer(h)
f=h-i
a=v*(1-s)
b=v*(1-s*f)
c=v*(1-s*(1-f))
swith(i)
case 0:r=v;g=c;B=a;
case 1:r=b;g=v;B=a;
case 2:r=a;g=v;B=c;
case 3:r=a;g=b;B=v;
case 4:r=c;g=a;B=v;
case 5:r=v;g=a;B=b
s/=255
if s=0(s是一个从0到1的一个小数)
r=g=b=v(r,g,b,v是byte型的)
else
h/=60;(h是0到360的一个值)
i=integer(h)
f=h-i
a=v*(1-s)
b=v*(1-s*f)
c=v*(1-s*(1-f))
swith(i)
case 0:r=v;g=c;B=a;
case 1:r=b;g=v;B=a;
case 2:r=a;g=v;B=c;
case 3:r=a;g=b;B=v;
case 4:r=c;g=a;B=v;
case 5:r=v;g=a;B=b
THue=0..359;procedure Tform1.hsv2rgb(Hue:Thue;saturation,value:byte;var red,green,blue:byte);
var
s,f:Double;
h:Double;
i,j:integer;
m,n,v,k:byte;
begin
s:=saturation/255;
h:=h/60;
f:=h-(int)h;
i:=int(h);
m:=v*(1-s);
n:=v*(1-s*f);
k:=v*(1-s*(1-f));
case i of:
0: r:=v,g:=k,b:=m;
1: r:=n,g:=v,b:=m;
2: r:=m,g:=v,b:=k;
3: r:=m,g:=n,b:=v;
4: r:=k,g:=m,b:=v;
5: r:=v,g:=m,b:=n;end;