HSL转RGB代码

做颜色渐变相关问题的时候,发觉颜色渐变并不是数值大小的渐变…
各种搜索之后,发现有HSV、HSL、RGB、CMYK等各种格式…
RGB不是那样子渐变的…

在wiki查了一下公式

http://en.wikipedia.org/wiki/HSL_color_space

[img]http://dl.iteye.com/upload/attachment/289953/db56b68f-dba5-3288-828c-c009b6f2643e.png[/img]

然后转成了代码


//Convert HSL to RGB
//H: Hue ( 0 to 360 )
//S: Saturation ( 0 to 1 )
//L: Ligntness ( 0 to 1 )
private function HSL_TO_RGB(H:Number,S:Number,L:Number):Number
{
var C:Number;
if(L <= 0.5) C = 2 * L * S;
else C = (2 - 2 * L) * S;
var H2:Number = Math.floor(H/60);
var X:Number = C * ( 1 - Math.abs(H2 % 2 - 1) );
var R:Number;
var G:Number;
var B:Number;
switch(H2)
{
case 0:
R = C;
G = X;
B = 0;
break;
case 1:
R = X;
G = C;
B = 0;
break;
case 2:
R = 0;
G = C;
B = X;
break;
case 3:
R = 0;
G = X;
B = C;
break;
case 4:
R = X;
G = 0;
B = C;
break;
case 5:
R = C;
G = 0;
B = X;
break;
default:
R = G = B = 0;
break;
}
var m:Number = L - 0.5 * C;
R += m;
G += m;
B += m;
R = Math.floor( R * 255);
G = Math.floor( G * 255);
B = Math.floor( B * 255);
return R * 65536 + G * 256 + B;
}


这样就可以做出来符合自己要求的Lightness的过渡了。
=。=

[color=red]现在在想,折腾出具有这么多计算的函数来进行颜色的过渡,性能肯定好不到哪里去。是不是做一个alhpa由1变0的黑色图层渐变更直接一些呢。[/color]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值