求代码,我有HSL转RGB代码 可是不会调用!!!
这是以前别人写的代码:procedure   RGBtoHSL(R,   G,   B:   Integer;   var   H,   S,   L:   Integer); 
//   RGB空间到HSL空间的转换 
var 
      Delta:   Double; 
      CMax,   CMin:   Double; 
      Red,   Green,   Blue,   Hue,   Sat,   Lum:   Double; 
begin 
      Red   :=   R   /   255; 
      Green   :=   G   /   255; 
      Blue   :=   B   /   255; 
      CMax   :=   Max(Red,   Max(Green,   Blue)); 
      CMin   :=   Min(Red,   Min(Green,   Blue)); 
      Lum   :=   (CMax   +   CMin)   /   2; 
      if   CMax   =   CMin   then 
            begin 
                  Sat   :=   0; 
                  Hue   :=   0; 
            end 
      else 
            begin 
                  if   Lum   <   0.5   then 
                        Sat   :=   (CMax   -   CMin)   /   (CMax   +   CMin) 
                  else 
                        Sat   :=   (cmax   -   cmin)   /   (2   -   cmax   -   cmin); 
                  delta   :=   CMax   -   CMin; 
                  if   Red   =   CMax   then 
                        Hue   :=   (Green   -   Blue)   /   Delta 
                  else   if   Green   =   CMax   then 
                        Hue   :=   2   +   (Blue   -   Red)   /   Delta 
                  else 
                        Hue   :=   4.0   +   (Red   -   Green)   /   Delta; 
                  Hue   :=   Hue   /   6; 
                  if   Hue   <   0   then 
                        Hue   :=   Hue   +   1; 
            end; 
      H   :=   Round(Hue   *   360); 
      S   :=   Round(Sat   *   100); 
      L   :=   Round(Lum   *   100); 
end;我要调用它在一个timage控件里面显示出来转换成的HSL格式图片,不会用 谢谢!

解决方案 »

  1.   

    没有用,HSL的数据范围不在0-255这个范围,所以你无法看到HSL图像,实际上也不存在这个图像。
      

  2.   


    HSL貌似单个分量的范围是0~1,那么你用这个值乘以256,然后去尾,再把RGB均设置成这个数值,会变成一个灰度的图像。
      

  3.   

    唔,我的意思是“表达HSL之中某个分量的灰度图像”,不过这有啥意义呢
      

  4.   


    H分量的范围是0-240吧  我想利用饱和度来改变图像的色泽啊  HSL比RGB处理图像要来的好
      

  5.   


    处理前转换成HSL,处理完了再转成RGB显示就行了。