Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];

Вниз

Как по цвету фона задать цвет текста?   Найти похожие ветки 

 
Aleksandr   (2003-06-17 15:10) [0]

В программе пользователь может самостоятельно задавать цвет фона для некоторых объектов. Но проблема в том, что если цвет фона он задаст темный, то надо как-то откорректировать цвет фонта текста на этом фоне.
Насколько я понимаю, из цвета надо выделить R,G, и B и сравнить их на предмет больше, например, 127, и, если какой-то больше, то задавать цвет текста светлый. Только как это сделать? Посмотрел на ColorToRGB - ничего не понял, чего она возвращает.


 
Юрий Федоров   (2003-06-17 15:16) [1]

ИМХО, если ты даешь пользователю менять цвет фона - давай менять и цвет текста, выберет черный на синем - сам виноват.
ColorToRGB возвращает TColorRef, из которого можно получать составляющие вызовом GetRValue, GetGValue, GetBValue


 
Aleksandr   (2003-06-17 15:48) [2]

Сударь, если Вы профессионально занимаетесь программированием, то должны понимать, что такое техническое задание. Оно, как правило, не обсуждается, а выполняется.
Ладно, вычленил я синий, красный и зеленый, а как теперь определить зависимость - какие их значения означают темный цвет, а какие - светлый?


 
jel   (2003-06-17 16:00) [3]

Ну а если попробовать эти значения инвертировать? Возможно не всегда красиво получится, но по идее должно быть читабельно.


 
Юрий Федоров   (2003-06-17 16:07) [4]

jel © (17.06.03 16:00)
Если инвертировать, то засада поджидает на сером цвете.
Aleksandr © (17.06.03 15:48)
(0,0,0) - черный
(255,255,255) - белый


 
Aleksandr   (2003-06-17 16:07) [5]

Инвертировать в смысле? 255-значение?


 
Sandman25   (2003-06-17 16:16) [6]

>Инвертировать в смысле?

not, битовая операция.


 
Aleksandr   (2003-06-17 16:16) [7]

Юрий Федоров © :
То есть, чем меньше сумма значений, тем темнее, а чем меньше одно значение, тем светлее?


 
Anatoly Podgoretsky   (2003-06-17 16:33) [8]

Перевести в градации серого, а дальше дело техники.


 
clickmaker   (2003-06-17 16:35) [9]

Могу предложить рецепт, который я использовал для рисования текста на цветных квадратиках, но там у меня, правда, для текста только черный или белый

if ((byte(Color)>128) or (byte(Color shr 8)>128) or
(byte(Color shr 16)>128))
then Font.Color:=clBlack
else Font.Color:=clWhite;


 
Aleksandr   (2003-06-17 16:47) [10]

clickmaker © :
Да мне только два и надо - белый и черный. Я пока смонтировал код вот так:

if ((B>150) AND (R+G<260)) OR (R+G+B<380) then
TPanel(Sender).Font.Color:=clWhite
else
TPanel(Sender).Font.Color:=clBlack;

но не уверен, что методом тыка вычисленные значения так эффектны не только на моем мониторе...


 
dtrn   (2003-06-18 23:25) [11]

Object1.Color:=clColor;
Object1.Font.Color := $00FFFFFF xor Object1.Color;


 
Asteroid   (2003-06-19 02:53) [12]

Вычислить серый из цвета объекта (30% красного, 59% зеленого и 11% синего), если он больше или равен $800000 - рисовать текст черным, если меньше - белым


 
Кот Бегемот   (2003-06-19 09:14) [13]

А если не секрет ? - для какого рода объектов не хватает виндовых цветов ???



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.024 c
6-97773
_DarkSide
2003-04-24 16:34
2003.06.30
Локальные компьютеры


14-97866
HolyGlory
2003-06-12 14:08
2003.06.30
По VC++


1-97607
SergeyI
2003-06-19 11:41
2003.06.30
как отловить клик на ScrollBar или кому он придалежит?


14-97831
tos
2003-06-11 02:25
2003.06.30
как проинсталить компонент


3-97502
Akademik
2003-06-05 12:51
2003.06.30
Нет каскадного удаления в таблицах Paradox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский