Я не уверен, как спросить это, но здесь идет.
Я рисую закрашенный цветной прямоугольник на экране. Цвет в форме R, G, B
Затем я хочу нарисовать текст поверх прямоугольника, однако цвет текста должен быть таким, чтобы он обеспечивал наилучшую контрастность, то есть его можно было прочитать.
Пример:
Если я нарисую черный прямоугольник, очевидным цветом для текста будет белый.
То, что я сейчас попробовал, так это Я передаю этой функции цвет прямоугольника, и она возвращает инвертированный цвет, который я затем использую для своего текста.
Это работает, но это не лучший способ.
Есть предложения?
// eg. usage: Color textColor = GetInverseLuminance(rectColor);
private Color GetInverseLuminance(Color color)
{
int greyscale = (int)(255 - ((color.R * 0.30f) + (color.G * 0.59f) + (color.B * 0.11f)));
return Color.FromArgb(greyscale, greyscale, greyscale);
}