:: Visual Foxpro, Foxpro for DOS
Раскраска грида
Burn
Автор

Сообщений: 5644
Откуда: Днепр
Дата регистрации: 02.01.2002
Вопрос чисто эстетический - есть грид с покрашенными в разный цвет строками по каким-то условиям, есть текущая строка, тоже со своим цветом, который перекрывает раскраску. Менять цвет текущей строки не проблема. Проблема как сделать это автоматически красиво чтобы был понятен цвет подсветки и не подбирать эти цвета вручную. Может у кого либо есть свои наработки?


------------------
В борьбе бобра с козлом побеждает бобро
Ratings: 0 negative/0 positive
Re: Раскраска грида
matod

Сообщений: 3062
Откуда: Иркутск
Дата регистрации: 31.10.2001
Т.е. для текущей строки ячейка должна выделяться цветом, который "похож" на исходный?
Может быть, использовать RGB-представление цвета, уменьшая значение по каждому каналу в два раза, ну типа rgb(200,100,200) -> RGB(100,50,100)

PS А для foreColor взять цвет наоборот, поярче, чтобы в целом текущая строка была контрастная. Ну и не обязательно в два раза значения менять, можно с другим множителем, главное чтобы пропорции цвета сохранились.



Исправлено 1 раз(а). Последнее : matod, 17.02.17 11:27
Ratings: 0 negative/0 positive
Re: Раскраска грида
Burn
Автор

Сообщений: 5644
Откуда: Днепр
Дата регистрации: 02.01.2002
matod
Т.е. для текущей строки ячейка должна выделяться цветом, который "похож" на исходный?
Да.

matod
Может быть, использовать RGB-представление цвета, уменьшая значение по каждому каналу в два раза, ну типа rgb(200,100,200) -> RGB(100,50,100)
Действительно, нужно ведь темнее делать а значит уменьшать. А меня переклинило - увеличивать и что делать если значение цвета уже 255 не понятно.
Синкс.

matod
А для foreColor взять цвет наоборот, поярче, чтобы в целом текущая строка была контрастная. Ну и не обязательно в два раза значения менять, можно с другим множителем, главное чтобы пропорции цвета сохранились
А вот тут возможны ньюансы - "поярче" не обязательно "поконтраснее"
Ratings: 0 negative/0 positive
Re: Раскраска грида
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
matod Отличная мысль!
Давно такой вопрос в голове витал. Тоже сделал бы как Burn хочет
Вопрос, а как из rgb числа вынуть?


------------------
Ratings: 0 negative/0 positive
Re: Раскраска грида
of63

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Там тупо 3 первых байта (R,G,B) в 32-битном слове
Ratings: 0 negative/0 positive
Re: Раскраска грида
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Вроде была уже такая тема...
Я для "осветления" применял вот такую функцию:
Она в принципе позволила получить блеклый "цвет фона" из яркого "основного цвета".
Смысл кода - перевод цвета из RGB в HSL и манипуляции с Lightness компонентой.
Чего-то мутить в самом RGB практически бессмысленно. Да и в таком коде весьма сложно подобрать "универсальный" коэффициент для яркости (если цвета совсем уж разные могут быть)...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Раскраска грида
of63

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
У меня вот такая.
Ratings: 1 negative/0 positive
Re: Раскраска грида
Burn
Автор

Сообщений: 5644
Откуда: Днепр
Дата регистрации: 02.01.2002
В продолжении темы - что-то не соображу как вытащить цвет текущей строки?
Ratings: 0 negative/0 positive
Re: Раскраска грида
of63

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Узнать цвет... Строки... текущей... Если в режиме Grid.Highlight, то HighlightBackColor, или в колонке взять BackColor, или в последнем TextBox, наверное...
Ratings: 0 negative/0 positive
Re: Раскраска грида
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
EVAL(This.DynamicBackColor)
Ratings: 0 negative/0 positive
Re: Раскраска грида
Burn
Автор

Сообщений: 5644
Откуда: Днепр
Дата регистрации: 02.01.2002
Хитро
Спасибо
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 8 (Гостей: 8)

© 2000-2024 Fox Club 
Яндекс.Метрика