gpt4 book ai didi

c# - 当我使用 Color.FromArgb() 创建颜色时,为什么 Color.IsNamedColor 不起作用?

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:28 24 4
gpt4 key购买 nike

在我的应用程序中,我允许用户构建一种颜色,然后向他显示颜色的名称或值。如果用户选择红色(全红色,而不是红色),我想向他展示“红色”。如果他选择了一些奇怪的颜色,那么十六进制值就可以了。下面是演示问题的示例代码:

static string GetName(int r, int g, int b)
{
Color c = Color.FromArgb(r, g, b); // Note that specifying a = 255 doesn't make a difference
if (c.IsNamedColor)
{
return c.Name;
}
else
{
// return hex value
}
}

即使是像红色这样非常明显的颜色,IsNamedColor 也永远不会返回 true。查看我的颜色和 Color.Red 的 ARGB 值,我看不出有什么区别。但是,调用 Color.Red.GetHashCode() 返回的散列码与 Color.FromArgb(255, 0, 0).GetHashCode() 不同。

如何使用用户指定的 RGB 值创建颜色并使 Name 属性正确显示?

最佳答案

From MSDN.

Property Value Type: System.Boolean
true if this Color was created by using either the FromName method or the FromKnownColor method; otherwise, false.

您可以构建从所有 KnownColor 的 rgb 元组到我想的名称的映射。

关于c# - 当我使用 Color.FromArgb() 创建颜色时,为什么 Color.IsNamedColor 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2032398/

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