簡體   English   中英

C#從KnownColor中刪除較暗的顏色

[英]C# remove darker colors from KnownColor

我從系統中得到了一個Knowncolor列表,但是我想刪除一些太暗的內容並使前景字符看不見。 我嘗試了以下代碼,但KnownColor.Black仍然出現。 無論如何,他們在黑暗中命令他們?

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

您可以將已知顏色轉換為Color實例,然后使用GetBrightness()方法比較亮度:

獲取此Color結構的色調飽和度 - 亮度(HSB)亮度值。 亮度范圍從0.0到Blockquote 1.0,其中0.0表示黑色,1.0表示白色。

float brightness = Color.FromKnownColor(KnownColor.Transparent).GetBrightness();

應用於您的示例,類似下面的內容應該工作(測試黑色和黃色):

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);
}

看看我關於確定前景色的答案 - 它涉及計算背景色的感知亮度,以決定是將白色還是黑色作為前景。 您可以使用相同的方法,只需選擇消除太暗的顏色:

根據背景使前景色為黑色或白色

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM