Модераторы: Illuminaty
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подбор цвета шрифта (алгоритм) 
:(
    Опции темы
tapa
Дата 15.8.2010, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 23.1.2010

Репутация: нет
Всего: нет



Привет. В моём проекте цвет фона, для ячеек таблицы, "дёргается" из базы. Цвет шрифта прописан "жёстко", например чёрный. Но чёрный на тёмно синем почти не видно.
Как сделать так, чтобы, например, для "тёмных цветов фона" цвет шрифта светлый и наоборот.

М,не сам алгоритм,а просто его описание. Типа: для цвета в ARGB > X цвет такой,для  ARGB < X цвет другой.
PM MAIL   Вверх
ksnk
Дата 15.8.2010, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



tapa, Если на пальцах, то можно преобразовать rgb цвет в HSV
последний параметр (V) цвета в нотации HSV будет яркостью цвета. 

-- По яркости можно выбирать белый для темного и черный для светлого фона. Еще нужно определить для параметра H диапазон "синего цвета" ( судя по картинке 190-290), для этого диапазона нужно выбрать светлый цвет.

-- Можно еще выбрать "противоположный" цвет по этой нотации (180-H), открутить ему яркость на 100. Получится контрастный к фону цвет. Хотя результат иногда странен  smile 

-- Практичнее всего дать возможность пользователю занести в базу вместе с цветом фона еще и цвет текста, так как автоматизм иногда дает странные с точки зрения заказчика результаты.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
tapa
Дата 15.8.2010, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 23.1.2010

Репутация: нет
Всего: нет



ksnk, Спасибо! Как раз то что нужно smile
PM MAIL   Вверх
tapa
Дата 15.8.2010, 12:47 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 23.1.2010

Репутация: нет
Всего: нет



Код

        public static void ColorToHSV(Color color, out double hue, out double saturation, out double value)
        {
            int max = Math.Max(color.R, Math.Max(color.G, color.B));
            int min = Math.Min(color.R, Math.Min(color.G, color.B));

            hue = color.GetHue();
            saturation = (max == 0) ? 0 : 1d - (1d * min / max);
            value = Math.Round(max / 255d,1);
        }

Код

            double hue, saturation, value;
            Color txtColor;

            //color -  передаётся в параметрах
            ColorToHSV(color, out hue, out saturation, out value);
            if (hue > 190 && hue < 290)//Blue
                txtColor = Color.White;
            else
                txtColor = (value <= 0.5) ? Color.White : Color.Black;


Уж незнаю насколько корректно
Код

txtColor = (value <= 0.5) ? Color.White : Color.Black;


Но для "моих" цветов "отрабатывает" smile

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Вёрстка веб-сайтов | Следующая тема »


 




[ Время генерации скрипта: 0.1004 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.