[英]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.