RGB颜色转HSL颜色:
定义HSL对象 ,C#里定义是HSB,个人觉得两个是一样的,只是叫法不同而已。
/// <summary>
/// 通过色相(hues),饱和度(saturation),亮度(brightness)来表示颜色
/// 在web颜色上叫HSL 色相(hues),饱和度(saturation), 亮度(Lightness)
/// </summary>
public class HSL
{
private double hue;
private double saturation;
private double brightness;
/// <summary>
/// 通过色相H(hues) 0 -- 360度
/// </summary>
public double H
{
get
{
return hue;
}
set
{
hue = (value > 360) ? 360 : ((value < 0) ? 0 : value);
}
}
/// <summary>
/// 饱和度S(saturation)1--100%
/// </summary>
public double S
{
get
{
return saturation;
}
set
{
saturation = (value > 1) ? 1 : ((value < 0) ? 0 : value);
}
}
/// <summary>
/// 亮度B(B,brightness或V,value L) 1--100% Lightness
/// </summary>
public double L
{
get
{
return brightness;
}
set
{
brightness = (value > 1) ? 1 : ((value < 0) ? 0 : value);
}
}
public HSL() { }
public HSL(double h, double s, double b)
{
hue = (h > 360) ? 360 : ((h < 0) ? 0 : h);
saturation = (s > 1) ? 1 : ((s < 0) ? 0 : s);
brightness = (b > 1) ? 1 : ((b < 0) ? 0 : b);
}
}
然后,直接调用相关方法即可。。
public static HSL RGBtoHSL(Color color)
{
return new HSL()
{
H = color.GetHue(),
L = color.GetBrightness(),
S = color.GetSaturation(),
};
}
更多HSL颜色 参考: HSL颜色大全