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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> диалог выбора цвета. тот, что в Paint' e 
:(
    Опции темы
_hunter
  Дата 27.10.2004, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



есть ли где-нить такой компонент.
еще интересует метод перевода цвета из схемы RGB в яркость/контраст/...[s]
( в одну тему затолкал так как вопросы -- одного плана )


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Sergey89
Дата 27.10.2004, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Компонент на вкаладке Dialogs-ColorDialog
--------------------
mlib.com.ru
PM MAIL   Вверх
~FoX~
Дата 27.10.2004, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



_hunter
В делфи 7 стандартный компанент ColorDialog есть


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


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



мда... протупил :stena


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Sergey89
Дата 27.10.2004, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(_hunter @ 27.10.2004, 14:19)
мда... протупил :stena

Я первый раз, когда программу делал также ступил...:)
--------------------
mlib.com.ru
PM MAIL   Вверх
Illusion Dolphin
Дата 27.10.2004, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

еще интересует метод перевода цвета из схемы RGB в яркость/контраст/


Код



Преобразование цвета RGB <-> 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;

Зайцев О.В.
Владимиров А.М.
Взято с Исходников.ru http://www.sources.ru



--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Igor_thief
Дата 7.12.2006, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А код то не правильный smile Это точно такой же код, как и в Делфи в модуле GraphUtil. Проверь его на таких значениях RGB 196.136.248. В итоге ты должен получить 181-213-181 а получиш 181-214-181. Чтобы исправить код, достаточно просто поменять все round на trunc.

Если сомневаешся, то заюзай функцию из модуля shlwapi. Там используется модуль IE.

Это сообщение отредактировал(а) Igor_thief - 7.12.2006, 15:59
--------------------
В каждом из нас спит гений, и с каждым днем все крепче ...delphigeek.blogspot.com | www.iskomorokh.com 
PM MAIL WWW ICQ YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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