![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать противоположный цвет? [D7, XP]
d@nger © (2007-11-28 08:52:00)Здравствуйте! Подскажите пожалуйста, как определить проивоположный цвет исходного цвета? например у белого - черный.... мне это надо для определения цвета шрифта на цветном фоне. Может стандартная функция есть...но я ее не нашел... Спасибо!
clickmaker (2007-11-28 16:17:00) [1]
> [17] Anatoly Podgoretsky © (28.11.07 16:14)
розовый цвет; доверься ему, и пятен - нет
(с)
Anatoly Podgoretsky (2007-11-28 16:14:00) [2]> Jeer (28.11.2007 15:46:14) [14]
И немного розового
PASZLIB (2007-11-28 16:04:00) [3]Спасибо амигос Джо! сам бы не додумался
Джо (2007-11-28 15:55:00) [4]> [13] PASZLIB (28.11.07 15:45)
> вдогонку вопрос как сделать цвет светлее ?
>
> пока обхожусь так
>
> c:=clBlack;
> Form3.color:=c;
> ....
>
> c:=c-500;
> Form3.color:=c; делает серый
> цветные пока не пробывал
Под мои задачи когда-то подошла такая функция:
function Lighter(Color:TColor; Percent:Byte):TColor;
var
R,
G,
B:Byte;
begin
Color:=ColorToRGB(Color);
R:=GetRValue(Color);
G:=GetGValue(Color);
B:=GetBValue(Color);
R:=R+muldiv(255-R,Percent,100);
G:=g+muldiv(255-G,Percent,100);
B:=b+muldiv(255-B,Percent,100);
Result:=RGB(R,G,B);
end;
Откуда содрал — не помню.
Jeer (2007-11-28 15:46:00) [5]Добавь белого
PASZLIB (2007-11-28 15:45:00) [6]вдогонку вопрос как сделать цвет светлее ?
пока обхожусь так
c:=clBlack;
Form3.color:=c;
....
c:=c-500;
Form3.color:=c; делает серый
цветные пока не пробывал
Anatoly Podgoretsky (2007-11-28 15:20:00) [7]А если это партия анархистов или белые?
Virgo_Style (2007-11-28 12:43:00) [8]> Правильный_Вася (28.11.07 11:57) [9]
Партия сказала - красный, значит - красный. И никаких дальтоников...
Anatoly Podgoretsky (2007-11-28 12:00:00) [9]
> я думаю он имеет ввиду инверт цвета...
А думать не надо, и чуть позже автор сказал, что ему нужен просто читаемый цвет на фоне другого, а это нельзя назвать противоположным.
Ему нужен совместимый цвет.
Правильный_Вася (2007-11-28 11:57:00) [10]
> > А у красного например?Зеленый?
а для дальтоников?
d@nger (2007-11-28 11:03:00) [11]Мне просто нужно было чтобы текст отчетливо читался, я пожалуй воспользуюсь советом guav [6]. Всем большое спасибо за помощь!
Jeer (2007-11-28 09:47:00) [12]Может речь об этом ?
http://www.artprojekt.ru/School/Painting/016.html
guav (2007-11-28 09:46:00) [13]> мне это надо для определения цвета шрифта на цветном фоне.
Для этого не надо выдумывать никакой противоположный цвет, нужно искать оптимальное сочетание цвета и фона.
Это может быть сделано по таблице.
Если таблице нет и надо попроще это реализовать оптимальным будет выбор между белым и чёрным в зависимости от яркости фона.
Типа так
function GetOptimalBkColor(AColor: TColor): TColor;
var
R, G, B: Word;
begin
R := GetRValue(AColor);
G := GetGValue(AColor);
B := GetBValue(AColor);
if 0.222*R + 0.707*G + 0.071*B <= 127 then
Result := clWhite
else
Result := clBlack;
end;
vegarulez (2007-11-28 09:44:00) [14]Anatoly Podgoretsky © (28.11.07 09:31) [4]
я думаю он имеет ввиду инверт цвета...
Anatoly Podgoretsky (2007-11-28 09:31:00) [15]
> d@nger (28.11.07 08:52)
Дай определение противоположного цвета.
Virgo_Style (2007-11-28 09:27:00) [16]> Johnmen © (28.11.07 09:14) [2]
> А у красного например?
Зеленый?
А у серого (127,127,127)?
Johnmen (2007-11-28 09:14:00) [17]
> например у белого - черный....
А у красного например?
MBo (2007-11-28 09:07:00) [18]NewCol := OldCol xor #FFFFFF;
для части цветов будет работать плохо.