📄 colorconverter.cs
字号:
namespace Imps.Client.Utils
{
using System;
public sealed class ColorConverter
{
private ColorConverter()
{
}
public static void HSL2RGB(HSL hsl, RGB rgb)
{
if (hsl.Saturation == 0)
{
rgb.Red = rgb.Green = rgb.Blue = (byte) (hsl.Luminance * 255);
}
else
{
double vH = ((double) hsl.Hue) / 360;
double num2 = (hsl.Luminance < 0.5) ? (hsl.Luminance * (1 + hsl.Saturation)) : ((hsl.Luminance + hsl.Saturation) - (hsl.Luminance * hsl.Saturation));
double num3 = (2 * hsl.Luminance) - num2;
rgb.Red = (byte) (255 * Hue_2_RGB(num3, num2, vH + 0.33333333333333331));
rgb.Green = (byte) (255 * Hue_2_RGB(num3, num2, vH));
rgb.Blue = (byte) (255 * Hue_2_RGB(num3, num2, vH - 0.33333333333333331));
}
}
private static double Hue_2_RGB(double v1, double v2, double vH)
{
if (vH < 0)
{
vH += 1;
}
if (vH > 1)
{
vH -= 1;
}
if ((6 * vH) < 1)
{
return (v1 + (((v2 - v1) * 6) * vH));
}
if ((2 * vH) < 1)
{
return v2;
}
if ((3 * vH) < 2)
{
return (v1 + (((v2 - v1) * (0.66666666666666663 - vH)) * 6));
}
return v1;
}
public static void RGB2HSL(RGB rgb, HSL hsl)
{
double num = ((double) rgb.Red) / 255;
double num2 = ((double) rgb.Green) / 255;
double num3 = ((double) rgb.Blue) / 255;
double num4 = Math.Min(Math.Min(num, num2), num3);
double num5 = Math.Max(Math.Max(num, num2), num3);
double num6 = num5 - num4;
hsl.Luminance = (num5 + num4) / 2;
if (num6 == 0)
{
hsl.Hue = 0;
hsl.Saturation = 0;
}
else
{
double num7;
hsl.Saturation = (hsl.Luminance < 0.5) ? (num6 / (num5 + num4)) : (num6 / ((2 - num5) - num4));
double num8 = (((num5 - num) / 6) + (num6 / 2)) / num6;
double num9 = (((num5 - num2) / 6) + (num6 / 2)) / num6;
double num10 = (((num5 - num3) / 6) + (num6 / 2)) / num6;
if (num == num5)
{
num7 = num10 - num9;
}
else if (num2 == num5)
{
num7 = (0.33333333333333331 + num8) - num10;
}
else
{
num7 = (0.66666666666666663 + num9) - num8;
}
if (num7 < 0)
{
num7 += 1;
}
if (num7 > 1)
{
num7 -= 1;
}
hsl.Hue = (int) (num7 * 360);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -