Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вычислить обратное значение цвета 
:(
    Опции темы
Sponger
Дата 19.4.2006, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Как вычислить обратное значение цвета. Т.е если у меня фон черный (темный), то текст должен быть не черный а белый (светлый), короче что-бы текст читался на любом фоне. 
PM MAIL   Вверх
Sunvas
Дата 19.4.2006, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



Первый способ:
 font.color:=brush.color xor youcolor;
Втророй способ:
canvas.pen.mode:=pmxor //или  что-то другое (выбери из списка)
Третий способ:
font.color:=brush.color shl 8 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Sponger
Дата 19.4.2006, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ни один из этих способов не работает.

Font.Color := brush.color shl 8; - это меняет Font.Color, но не для всех цветов. Пример - для темно синего brush.color - цвет Font.Color = black.

А мне надо чтобы были контрастные цвета  

Это сообщение отредактировал(а) Sponger - 19.4.2006, 08:02
PM MAIL   Вверх
~FoX~
Дата 19.4.2006, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



font.color:= 255 -  brush.color;
Вроде так стандартно получают негатив из RGB.  

Это сообщение отредактировал(а) ~FoX~ - 19.4.2006, 08:12


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Sponger
Дата 19.4.2006, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Блин, думал можно сделать инверсию цвета не преобразовывая в RGB. 
PM MAIL   Вверх
~FoX~
Дата 19.4.2006, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



Ну на в хексе 
font.color:= $FFFFFF - brush.color; 

Это сообщение отредактировал(а) ~FoX~ - 19.4.2006, 08:33


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Sponger
Дата 19.4.2006, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

font.color:= $FFFFFF - brush.color; 


Опять не получается для черного и темносинего brush.color, font.Color = black

А если вот так
Font.Color := RGB(255 - ColorToRGB(brush.color), (255 - ColorToRGB(brush.color)) shr 8, (255 - ColorToRGB(brush.color)) shr 16);

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

Добавлено @ 08:48 
Может быть по другому. Как определить светлый или темный цвет? 
PM MAIL   Вверх
~FoX~
Дата 19.4.2006, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



Ну попробуй так....
Код

 if Label1.color <= $888888 then Label1.Font.color := clWhite
 else Label1.Font.color := clBlack;
 


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
maxim1000
Дата 19.4.2006, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

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



Цитата(~FoX~ @  19.4.2006,  07:32 Найти цитируемый пост)
font.color:= $FFFFFF - brush.color;

при значении каждого цвета FF/2 ничего хорошего не получится

Цитата(Sponger @  19.4.2006,  07:41 Найти цитируемый пост)
Может быть по другому. Как определить светлый или темный цвет?

где-то на форуме была подобная тема
суть в том, что цвет переводится в серый эквивалентной яркости, а ее можно потом сравнить с 0.5
просто берется сумма цветовых компонент с какими-то коэффициентами... 


--------------------
qqq
PM WWW   Вверх
Sponger
Дата 19.4.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

 if Label1.color <= $888888 then Label1.Font.color := clWhite    
 else Label1.Font.color := clBlack;


~FoX~ спасибо это работает.  

Это сообщение отредактировал(а) Sponger - 19.4.2006, 11:54
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

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


 




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


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

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