|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.09.2007, 21:27 | #1 |
Форумчанин Подтвердите свой е-майл
Регистрация: 01.12.2006
Сообщений: 514
|
цвета, оттенок и контраст
всем привет!!
подскажите как настроить мне оттенок и контраст программно, с RGB я разобрался, а вот применить к цвету оттенок и контраст немогу. заранее спасибо
Пишу на Delphi за еду
|
13.09.2007, 02:59 | #2 |
Форумчанин
Регистрация: 01.09.2007
Сообщений: 747
|
По моему проблемы здесь нет, ведь контраст и оттенок это производные свойства от соотношения трех базовых цветов.
Контраст например выражает чистоту основного цвета. Значит чтобы поменять эти свойства нужно просто поменять РГБ.
Никому не верьте.
|
13.09.2007, 09:53 | #3 |
Форумчанин Подтвердите свой е-майл
Регистрация: 01.12.2006
Сообщений: 514
|
Это я понял, но в какую сторону и в каком соотношении поменять цвета мне непонятно, если можно поподробнее или еще лучше пример.
Пишу на Delphi за еду
|
13.09.2007, 10:48 | #4 |
детский тренер
Форумчанин
Регистрация: 08.06.2007
Сообщений: 532
|
запусти Fotoshop и в нем вібери нужній тебе цвет в палитре цветов.... И скопируй буквенное значение цвета....
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
|
13.09.2007, 11:15 | #5 |
Форумчанин Подтвердите свой е-майл
Регистрация: 01.12.2006
Сообщений: 514
|
мне надо привязатся к трекбару, и при движении ползунка изменять оттенок или контраст, короче говоря мне надо добавить в программу возможность менять оттенок с помощью трекбара и контраст с помощью другого трекбара
Пишу на Delphi за еду
|
13.09.2007, 12:04 | #6 |
Форумчанин Подтвердите свой е-майл
Регистрация: 08.08.2007
Сообщений: 183
|
Преобразование цвета RGB to HLS
{ Максимальные значения } Const HLSMAX = 240; RGBMAX = 255; UNDEFINED = (HLSMAX*2) div 3; Var H, L, S : integer; { H-оттенок, L-яркость, S-насыщенность } R, G, B : integer; { цвета } procedure RGBtoHLS; Var cMax,cMin : integer; Rdelta,Gdelta,Bdelta : single; Begin cMax := max( max(R,G), B); cMin := min( min(R,G), B); L := round( ( ((cMax+cMin)*HLSMAX) + RGBMAX )/(2*RGBMAX) ); if (cMax = cMin) then begin S := 0; H := UNDEFINED; end else begin if (L <= (HLSMAX/2)) then S := round( ( ((cMax-cMin)*HLSMAX) + ((cMax+cMin)/2) ) / (cMax+cMin) ) else S := round( ( ((cMax-cMin)*HLSMAX) + ((2*RGBMAX-cMax-cMin)/2) ) / (2*RGBMAX-cMax-cMin) ); Rdelta := ( ((cMax-R)*(HLSMAX/6)) + ((cMax-cMin)/2) ) / (cMax-cMin); Gdelta := ( ((cMax-G)*(HLSMAX/6)) + ((cMax-cMin)/2) ) / (cMax-cMin); Bdelta := ( ((cMax-B)*(HLSMAX/6)) + ((cMax-cMin)/2) ) / (cMax-cMin); if (R = cMax) then H := round(Bdelta - Gdelta) else if (G = cMax) then H := round( (HLSMAX/3) + Rdelta - Bdelta) else H := round( ((2*HLSMAX)/3) + Gdelta - Rdelta ); if (H < 0) then H:=H + HLSMAX; if (H > HLSMAX) then H:= H - HLSMAX; end; if S<0 then S:=0; if S>HLSMAX then S:=HLSMAX; if L<0 then L:=0; if L>HLSMAX then L:=HLSMAX; end; procedure HLStoRGB; Var Magic1,Magic2 : single; function HueToRGB(n1,n2,hue : single) : single; begin if (hue < 0) then hue := hue+HLSMAX; if (hue > HLSMAX) then hue:=hue -HLSMAX; if (hue < (HLSMAX/6)) then result:= ( n1 + (((n2-n1)*hue+(HLSMAX/12))/(HLSMAX/6)) ) else if (hue < (HLSMAX/2)) then result:=n2 else if (hue < ((HLSMAX*2)/3)) then result:= ( n1 + (((n2-n1)*(((HLSMAX*2)/3)-hue)+(HLSMAX/12))/(HLSMAX/6))) else result:= ( n1 ); end; begin if (S = 0) then begin B:=round( (L*RGBMAX)/HLSMAX ); R:=B; G:=B; end else begin if (L <= (HLSMAX/2)) then Magic2 := (L*(HLSMAX + S) + (HLSMAX/2))/HLSMAX else Magic2 := L + S - ((L*S) + (HLSMAX/2))/HLSMAX; Magic1 := 2*L-Magic2; R := round( (HueToRGB(Magic1,Magic2,H+(HLSMAX/3))*RGBMAX + (HLSMAX/2))/HLSMAX ); G := round( (HueToRGB(Magic1,Magic2,H)*RGBMAX + (HLSMAX/2)) / HLSMAX ); B := round( (HueToRGB(Magic1,Magic2,H-(HLSMAX/3))*RGBMAX + (HLSMAX/2))/HLSMAX ); end; if R<0 then R:=0; if R>RGBMAX then R:=RGBMAX; if G<0 then G:=0; if G>RGBMAX then G:=RGBMAX; if B<0 then B:=0; if B>RGBMAX then B:=RGBMAX; end;
Until The End Of Time
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Инверсия цвета | Dj_smart | Общие вопросы Delphi | 6 | 08.05.2008 16:29 |
DBGrid цвета | Steel_rat | БД в Delphi | 9 | 01.02.2008 11:06 |
Формат цвета | xTANATOSx | Общие вопросы Delphi | 14 | 02.11.2007 20:22 |
Изменение цвета | Artem | Общие вопросы Delphi | 5 | 12.07.2007 09:07 |
цвета | Toxa | Общие вопросы Delphi | 3 | 20.04.2007 12:03 |