gpt4 book ai didi

c# - 是否有用于 HSV 到 RGB 的内置 C#/.NET 系统 API?

转载 作者:IT王子 更新时间:2023-10-29 04:15:16 25 4
gpt4 key购买 nike

.NET Framework 中是否为 converting HSV to RGB 内置了 API? ?我没有在 System.Drawing.Color 中看到用于此的方法,但平台中没有这样的方法似乎令人惊讶。

最佳答案

没有内置的方法来执行此操作,但计算并不是非常复杂。
另请注意,Color 的 GetHue()、GetSaturation() 和 GetBrightness() 返回 HSL 值,而不是 HSV。

以下 C# 代码使用 Wikipedia 中描述的算法在 RGB 和 HSV 之间进行转换.
我已经发布了这个答案 here ,但我会在此处复制代码以供快速引用。

色相的范围是 0 - 360,饱和度或明度的范围是 0 - 1。

public static void ColorToHSV(Color color, out double hue, out double saturation, out double value)
{
int max = Math.Max(color.R, Math.Max(color.G, color.B));
int min = Math.Min(color.R, Math.Min(color.G, color.B));

hue = color.GetHue();
saturation = (max == 0) ? 0 : 1d - (1d * min / max);
value = max / 255d;
}

public static Color ColorFromHSV(double hue, double saturation, double value)
{
int hi = Convert.ToInt32(Math.Floor(hue / 60)) % 6;
double f = hue / 60 - Math.Floor(hue / 60);

value = value * 255;
int v = Convert.ToInt32(value);
int p = Convert.ToInt32(value * (1 - saturation));
int q = Convert.ToInt32(value * (1 - f * saturation));
int t = Convert.ToInt32(value * (1 - (1 - f) * saturation));

if (hi == 0)
return Color.FromArgb(255, v, t, p);
else if (hi == 1)
return Color.FromArgb(255, q, v, p);
else if (hi == 2)
return Color.FromArgb(255, p, v, t);
else if (hi == 3)
return Color.FromArgb(255, p, q, v);
else if (hi == 4)
return Color.FromArgb(255, t, p, v);
else
return Color.FromArgb(255, v, p, q);
}

关于c# - 是否有用于 HSV 到 RGB 的内置 C#/.NET 系统 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1335426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com