Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Игры с BackColor / 12 сообщений из 12, страница 1 из 1
28.04.2005, 09:44
    #33039761
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игры с BackColor
Доброго всем времени суток!

Ребяты, я иногда в форме для более наглядного интерфейса, некоторые элементы управления делаю другого цвета, но для того чтобы это не было безвкусно и наляписто, а так же чтобы вписывалось в общую цветовую палитру, установленную в Windows, я отталкиваюсь от ThisForm.BackColor и просто делаю цвет элемента чуть темнее или чуть светлее, но того же тона. И делаю это так:
в форме есть метод SetColor
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
nColor=ThisForm.BackColor
nBlue=Int(nColor/ 65536 )
nGreen=Int((nColor-nBlue* 65536 )/ 256 )
nRed=nColor-nBlue* 65536 -nGreen* 256 
nMax=MAX(nBlue,nGreen,nRed)
StepRed=nRed/nMax
StepGreen=nGreen/nMax
StepBlue=nBlue/nMax
ThisForm.nLightColor=Int((nRed+( 255 -nMax)/ 2 *StepRed))+;
                     Int((nGreen+( 255 -nMax)/ 2 *StepGreen))* 256 +;
                     Int((nBlue+( 255 -nMax)/ 2 *StepBlue))* 65536 
ThisForm.nDarkColor= Int((nMax/ 1 . 5 *StepRed))+;
                     Int((nMax/ 1 . 5 *StepGreen))* 256 +;
                     Int((nMax/ 1 . 5 *StepBlue))* 65536 
Играясь коэффициентами в формуле можно сделать светлее или темнее, но что-то мне подсказывает, что есть способ легче и лучше! Может кто знает и поделится?

Заранее благодарен!
...
Рейтинг: 0 / 0
28.04.2005, 10:14
    #33039826
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игры с BackColor
А почему не используете функцию RGB()?
...
Рейтинг: 0 / 0
28.04.2005, 10:19
    #33039842
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игры с BackColor
Hi, Crip.

А как, используя функцию RGB, и зная исходный цвет (ThisForm.BackColor), получить цвет чуть темнее например?
...
Рейтинг: 0 / 0
28.04.2005, 10:27
    #33039870
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игры с BackColor
Ребяты у меня есть мысли в этом направлении, но я не знаю как их реализовать! Дело в том, что когда появляется диалог выбора цвета, то там помимо значений Красный, Зеленый, Синий есть еще поля ввода для изменения значений Оттенка, Контраста и Яркости. Так вот Яркость - это как раз то, что нужно, но как ее поменять программно?
Тогда уж точно не пришлось бы проводить все вычисления!
...
Рейтинг: 0 / 0
28.04.2005, 15:52
    #33040887
Crispy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игры с BackColor
Так ведь в мониторе - как ни крути - все равно только 3 луча, управляющих цветом точки на экране - красный (R), зеленый (G), синий (B). От их смешивания и от яркости каждого все и образуется. Так что использование чего-то другого вместо RGB - это только вопрос удобства.
Я это не к тому, чтобы напоминать азы, просто отсюда очевидно, как в RGB управлять яркостью - уменьшить немножко значение каждого цвета - и все. Вот только тут зависимость цвета не совсем линейная - особенность работы глаза - но в маленьких пределах можно и линейно.
...
Рейтинг: 0 / 0
28.04.2005, 16:23
    #33041018
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игры с BackColor
Hi, Crispy!

Да я знаю, что зависимость далеко не линейная, для этого и писал процедуру в начале топика, просто мыслил так: если в диалоге изменения цвета я меняю значение яркости, то фокс автоматически проставляет соответсвующие значения RGB, соотвественно фокс имеет механизм определения этих параметров в зависимости от яркости! Вот и подумал, раз есть такой механизм, а врудг и функция такая есть?

Но видать нету!!!!
...
Рейтинг: 0 / 0
29.04.2005, 02:56
    #33041912
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игры с BackColor
Hi kms_!

AFAIK такой функции нету. Тек что твоё решение вполне правильное. Разве что снова "собирать" цвет можно не через R+G*256+B*65535 - а с помошью функции RGB - так IMHO немного нагляднее будет.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
29.04.2005, 09:06
    #33042036
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игры с BackColor
Hi, Igor Korolyov.

Да, видать придется остановиться на том, что есть! Насчет наглядности учту!

Всем спасибо.
...
Рейтинг: 0 / 0
29.04.2005, 12:33
    #33042598
Crispy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игры с BackColor
Hi, kms_ !

Сама идея меня вчера заинтересовала, и на досуге я сваял маленькую программку :) - думаю она мне еще пригодится - раньше подбирал цвета каждый раз заново, а с ней намного проще будет.
Вот посмотри в прицепе - там как раз все наглядно - насчет яркости - спиннером можно передвигать сразу R, G и B - я так попробовал - нормальные сочетания получаются при разнице между новым и старым цветом где-то на 5-10 единиц.
Это APP, только скомпиллировал в девятке, не знаю пойдет на других или нет, но там вроде все просто, ничего "такого" нет, чтобы не пошло.
...
Рейтинг: 0 / 0
29.04.2005, 12:59
    #33042673
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игры с BackColor
вот здесь - http://astronomy.swin.edu.au/~pbourke/colour/hsl/
вроде описан алгоритм преобразоапния RGB в HSL и обратно
...
Рейтинг: 0 / 0
29.04.2005, 13:45
    #33042823
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игры с BackColor
Hi, Crispy!

Я и не думал, что при использовании линейной зависимости могут получится довольно не плохие результаты! В небольших пределах, конечно, но, как правило, именно небольшие изменения цвета и нужны!
Хотя от своего варианта, наверное, отказываться не буду...

Crispy, спасибо.
...
Рейтинг: 0 / 0
29.04.2005, 13:46
    #33042830
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игры с BackColor
Bum, спасибо за ссылку - буду разбираться! Если что - напишу!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Игры с BackColor / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]