AS3-HSL到RGB类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AS3-HSL到RGB类相关的知识,希望对你有一定的参考价值。
This requires the [RGB](http://snipplr.com/view/34818/as3--rgb-class-for-rgb-to-hex/) class I posted as well
/** * @author Rivaledsouls * @version 1.0 * Feel free to use this code as you wish as long as you cite * me, Rivaledsouls, for use of the code in any projects where * you share the source. * (c) 2010 */ package utils.color{ public class HSL { private var luminance:Number; private var saturation:Number; private var hue:Number; /** * Contructs an HSL object for containing Hue Saturation and Luminance values, and * converting them to an RGB or Hex color * @param h Hue (0-360) * @param s Saturation(0-1) * @param l Luminance(0-1) */ public function HSL(h:Number=0, s:Number=1, l:Number=.5) { hue = h; saturation = s; luminance = l; } /* * Getters for each channel */ public function get Hue():Number { return hue; } public function get Saturation():Number { return saturation; } public function get Luminance():Number { return luminance; } /* *Setters for each channel */ public function set Hue(Value:Number):void { hue = (Value>360)? Value-360 : ((Value<0)?Value+360:Value); } public function set Saturation(Value:Number):void { saturation = (Value>1)? 1 : ((Value<0)?0:Value); } public function set Luminance(Value:Number):void { luminance = (Value>1)? 1 : ((Value<0)?0:Value); } /** * Converts the HSL object to an RGB object defining the same color * @return RGB object */ public function toRGB():RGB{ return getRGB(hue, saturation, luminance); } /** * Converts the HSL object to a Hex value defining the same color * @return Hex value of HSL color */ public function toHex():uint { return toRGB().Hex; } /** * Static method for directly converting HSL values to Hex * @param h Hue (0-360) * @param s Saturation(0-1) * @param l Luminance(0-1) * @return a Hex value represnting the given HSL values */ public static function getHex(h:Number, s:Number, l:Number):uint{ return getRGB(h, s, l).Hex; } /** * Static method for directly converting HSL values to * an RGB object * @param h Hue (0-360) * @param s Saturation(0-1) * @param l Luminance(0-1) * @return an RGB object represnting the given HSL values */ public static function getRGB(h:Number, s:Number, l:Number):RGB{ h = h / 360; var r:Number; var g:Number; var b:Number; if(l==0) { r=g=b=0; } else { if(s == 0) { r=g=b=l; } else { var t2:Number = (l<=0.5)? l*(1+s):l+s-(l*s); var t1:Number = 2*l-t2; var t3:Vector.<Number> = new Vector.<Number>(); t3.push(h+1/3); t3.push(h); t3.push(h-1/3); var clr:Vector.<Number> = new Vector.<Number>(); clr.push(0); clr.push(0); clr.push(0); for(var i:int=0;i<3;i++) { if(t3[i]<0) t3[i]+=1; if(t3[i]>1) t3[i]-=1; if(6*t3[i] < 1) clr[i]=t1+(t2-t1)*t3[i]*6; else if(2*t3[i]<1) clr[i]=t2; else if(3*t3[i]<2) clr[i]=(t1+(t2-t1)*((2/3)-t3[i])*6); else clr[i]=t1; } r=clr[0]; g=clr[1]; b=clr[2]; } } return new RGB(int(r*255),int(g*255),int(b*255)); } } }
以上是关于AS3-HSL到RGB类的主要内容,如果未能解决你的问题,请参考以下文章
java:BufferedImage判断图像通道顺序并转RGB/BGR
将 OpenGL 片段着色器设置为仅通过漫反射减少 vec4 色点的 RGB 值,而不是 alpha