C#从KnownColor中删除较暗的颜色

Yan*_*ang 4 c# colors

我从系统中得到了一份Knowncolor列表,但是我想删除一些太暗的内容并使前景字符看不见.我尝试了以下代码,但KnownColor.Black仍然出现.无论如何,他们在黑暗中命令他们?

if (knownColor > KnownColor.Transparent && knownColor < KnownColor.MidnightBlue && knownColor < KnownColor.Navy)
            {
                //add it to our list
                colors.Add(knownColor);
            }
Run Code Online (Sandbox Code Playgroud)

Bro*_*ass 7

您可以将已知颜色转换为Color实例,然后使用以下GetBrightness()方法比较亮度:

获取此Color结构的色调饱和度 - 亮度(HSB)亮度值.亮度范围从0.0到Blockquote 1.0,其中0.0表示黑色,1.0表示白色.

float brightness = Color.FromKnownColor(KnownColor.Transparent).GetBrightness();
Run Code Online (Sandbox Code Playgroud)

应用于您的示例,类似下面的内容应该工作(测试黑色和黄色):

KnownColor knownColor = KnownColor.Yellow;

float transparentBrightness = Color.FromKnownColor(KnownColor.Transparent).GetBrightness();
float midnightBlueBrightness = Color.FromKnownColor(KnownColor.MidnightBlue).GetBrightness();
float navyBrightness = Color.FromKnownColor(KnownColor.Navy).GetBrightness();
float knownColorBrightness = Color.FromKnownColor(knownColor).GetBrightness();

if (knownColorBrightness  < transparentBrightness 
    && knownColorBrightness > midnightBlueBrightness 
    && knownColorBrightness > navyBrightness)
{
    //add it to our list
    colors.Add(knownColor);
}
Run Code Online (Sandbox Code Playgroud)