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

Вниз

сложение цвета   Найти похожие ветки 

 
XcCCC   (2009-08-11 00:16) [0]

Задача написать прогу сложения цвета.
Какие цвета получаются при сложении двух цветов.
Позже можно каждый цвет в частях указывать для получения оттенков
color1:=clRed;
color2:=clYellow;
Panel1.Color:=color1+color2; ????

такой алгоритм?


 
М. Береговой   (2009-08-11 00:20) [1]

Думаю, надо цвета представлять в виде типа hex ( пример светло-серого #EEEEEE), а потом складывать или вычитать RGB части...


 
XcCCC   (2009-08-11 00:27) [2]

хм тогда может представлять цвета в виде трех переменных
colorR:= (byte)
colorG:= (byte)
colorB:= (byte)
константы на каждый цвет посмотреть в фотошопе
слаживать это как, а если переполнение что делать?
colorR1+colorR2:= 200+100= 300>255


 
boa_kaa ©   (2009-08-11 01:02) [3]


> XcCCC   (11.08.09 00:16)  

ты не поверишь, но первая же ссылка
http://www.google.ru/search?q=%D1%81%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5+%D1%86%D0%B2%D0%B5%D1%82%D0%BE%D0%B2&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:ru:unofficial&client=firefox-a


 
Inovet ©   (2009-08-11 01:12) [4]

Совсем недавно
http://delphimaster.net/view/2-1249460930/


 
Ega23 ©   (2009-08-11 02:01) [5]

Было дано очень давно кем-то, кем - не помню (тогда ещё копирайт не ставил).
ЕМНИП, Digitman © поделился.

function ContrastColor(AColor: TColor): TColor;
const
TolerSq = 16 * 16;
begin
if Sqr(GetRValue(AColor) - $80) + Sqr(GetGValue(AColor) - $80)
  + Sqr(GetBValue(AColor) - $80) < TolerSq then
  Result := (AColor + $7F7F7F) and $FFFFFF
else
  Result := AColor xor $FFFFFF;
end;


Функция выдаёт контрастный цвет (надо было для вывода текста на выделенной области)


 
XcCCC   (2009-08-11 02:11) [6]

спасибо! а я не знал как сформулировать запрос яндекху
градент не нужен


 
Inovet ©   (2009-08-11 07:19) [7]

> [6] XcCCC   (11.08.09 02:11)
> спасибо! а я не знал как сформулировать запрос яндекху
> градент не нужен

А в нём типа сложение цветов нет?


 
SPeller ©   (2009-08-11 08:38) [8]

пользуюсь gdi+ и нафик не надо знать как там эти цвета складываются :)


 
MsGuns ©   (2009-08-11 09:23) [9]

>Ega23 ©   (11.08.09 02:01) [5]

Вариант не без недостатков, как, впрочем и вариант Юры Зотова.
С месяцок назад решал ту же проблему - универсального алгоритма на все цвета и все мониторы и видеокарты не нашел. При  определенной комбинации фонта и кисти надпись почти не видна или не видна вовсе. Причем для кадого способа эти комбинации собственные :)


 
SPeller ©   (2009-08-11 09:50) [10]

Неплох вариант когда текст выводишь сначала черным, а потом, поверх, с небольшим смещением в 1 пиксель влева-вверх, белым цветом. Правда, это красивее получается на том же gdi+ с антиальязингом или сглаживанием.

ЗЫ: Попользовался им немного - желания возиться с gdi не осталось :)


 
Дмитрий С ©   (2009-08-12 18:22) [11]

Желтый с синим должен давать зеленый, не так то просто в ргб сложить два цвета


 
Dimka Maslov ©   (2009-08-12 18:29) [12]

Простое смешивание цветов:

1. Разложить цвета на компоненты R, G, B
2. Вычислить среднее арифметическое отдельных компонентов R, G, B для двух цветов
3. Записать компоненты в переменную ТСolor

Для системных цветов типа clWindowText необходимо сначала произвести преобраозвание в RGB.


 
Jeer ©   (2009-08-12 18:43) [13]

Зависит от модели смешивания - что мы смешивает на просвет или цвет
В модели RGB смешение аддитивное, т.е. цвет при смешивании осветляется.
Если хотим получить аналог смешения красок на реальной палитре, то надо перейти сначала в координаты CMY или CMYK, там смешать и вернуть отбратно в RBG для отображения ( смешение будет вычитающим в итоге )


 
Дмитрий С ©   (2009-08-12 18:58) [14]


>
> Простое смешивание цветов:
>
> 1. Разложить цвета на компоненты R, G, B
> 2. Вычислить среднее арифметическое отдельных компонентов
> R, G, B для двух цветов
> 3. Записать компоненты в переменную ТСolor
>
> Для системных цветов типа clWindowText необходимо сначала
> произвести преобраозвание в RGB.
>
>

желтый : 255.255.0
синий: 0.0.255
среднее: 127.127.127 - серый а не зеленый

про смик больше на правду похоже


 
XcCCC   (2009-08-15 01:02) [15]

вот откопал может кому пригодится

function GetMixColor (c1, c2: TColor): TColor;
begin
 Result := RGB (
                 (GetRValue (c1) + GetRValue (c2)) div 2,
                 (GetGValue (c1) + GetGValue (c2)) div 2,
                 (GetBValue (c1) + GetBValue (c2)) div 2
               );
end;


 
DVM ©   (2009-08-15 01:14) [16]

Вот так побыстрее будет:

function MixerColors(FromColor, ToColor: TColor; Rate: Single): TColor;
var
 ra, rb: byte;
begin
 RA := round(Rate * 255);
 RB := 255 - RA;
 result := (((Lo(FromColor) * RA + Lo(ToColor) * RB) shr 8) or
           (((Lo(FromColor shr 8) * RA + Lo(ToColor shr 8) * RB) shr 8) shl 8) or
           (((Lo(FromColor shr 16) * RA + Lo(ToColor shr 16) * RB) shr 8) shl 16));
end;


 
Дмитрий С ©   (2009-08-15 06:28) [17]

<
> Вот так побыстрее будет:

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

> XcCCC   (15.08.09 01:02) [15]

это не дает правильного смешивания.


 
Anatoly Podgoretsky ©   (2009-08-15 10:37) [18]

> Дмитрий С  (15.08.2009 06:28:17)  [17]

> это не дает правильного смешивания.

Это он поиздевался.


 
Юрий Зотов ©   (2009-08-15 10:51) [19]

> Дмитрий С ©   (12.08.09 18:22) [11]

> Желтый с синим должен давать зеленый, не так то просто в
> ргб сложить два цвета

Очень просто. На форме 3 комбобокса с  DropDownList = (Красный, Зеленый, Сииний). Назначить им обработчик OnChange, а форме - обработчик OnShow. Код не оптимизировал и лишние локальные переменные не убирал специально - чтобы суть была понятнее и чтобы все происходящее можно было посмотреть отладчиком.

uses
 Math;

function MixColors(Color1, Color2: cardinal): cardinal; overload;
var
 R, G, B : byte;
begin
 R := Min(GetRValue(Color1) + GetRValue(Color2), 255);
 G := Min(GetGValue(Color1) + GetGValue(Color2), 255);
 B := Min(GetBValue(Color1) + GetBValue(Color2), 255);
 Result := RGB(R, G, B)
end;

function MixColors(Color1, Color2, Color3: cardinal): cardinal; overload;
var
 C: cardinal;
begin
 C := MixColors(Color1, Color2);
 Result := MixColors(C, Color3)
end;

// OnShow, ComboBox1.OnChange, ComboBox2.OnChange, ComboBox3.OnChange
procedure TForm1.ChangeColor(Sender: TObject);
var
 Color1, Color2, Color3: cardinal;
begin
 Color1 := $FF shl (ComboBox1.ItemIndex * 8);
 Color2 := $FF shl (ComboBox2.ItemIndex * 8);
 Color3 := $FF shl (ComboBox3.ItemIndex * 8);
 Color := MixColors(Color1, Color2, Color3)
end;


 
Юрий Зотов ©   (2009-08-15 11:20) [20]

> Юрий Зотов ©   (15.08.09 10:51) [19]

> Дмитрий С ©   (12.08.09 18:22) [11]
> Желтый с синим должен давать зеленый

Вдогонку - желтый с синим должен давать белый, а не зеленый.

Желтый - это красный с зеленым, поэтому желтый с синим - это красный с зеленым и синим. То есть - белый.

Кому приходилось настраивать сведение лучей в старых цветных телевизорах - тот знает.
:o)


 
Дмитрий С ©   (2009-08-15 11:33) [21]


> Вдогонку - желтый с синим должен давать белый, а не зеленый.
>  

Со школы помню, что не белый - точно. :)
Надо делать фотошопный эффект multiply в CMYKе, чтобы получить правильное смешение *цветов*, а не лучей.


 
TIF ©   (2009-08-15 11:38) [22]

> Желтый - это красный с зеленым, поэтому желтый с синим -
>  это красный с зеленым и синим. То есть - белый.

Зависит от кодировки... бррр ))) от цветовой модели то есть :)

Основные сведения о цвете
help.adobe.com/ru_RU/Photoshop/11.0/WSECCD001A-4989-4451-A752-63D5EF9D5619a.html
Understanding color
help.adobe.com/en_US/Photoshop/11.0/WSECCD001A-4989-4451-A752-63D5EF9D5619a.html

PS: сравните картинки в русскоязычной версии статьи и англоязычной. Однако, даже тут умудрились различия сделать :)))


 
Anatoly Podgoretsky ©   (2009-08-15 11:43) [23]

> Юрий Зотов  (15.08.2009 11:20:20)  [20]

Глупо складывать цвета в RGB


 
Inovet ©   (2009-08-15 11:48) [24]

> [20] Юрий Зотов ©   (15.08.09 11:20)
> > Юрий Зотов ©   (15.08.09 10:51) [19]
>
> > Дмитрий С ©   (12.08.09 18:22) [11]
> > Желтый с синим должен давать зеленый
>
> Вдогонку - желтый с синим должен давать белый, а не зеленый.

Многие люди не понимают разницы между излучением и поглощением, но программистам вроде пора усвоить.


 
Юрий Зотов ©   (2009-08-15 11:49) [25]

> Дмитрий С ©   (12.08.09 18:22) [11]
> ... в ргб ...

> Дмитрий С ©   (15.08.09 11:33) [21]
> ... в CMYKе ...

Как понять тебя, Саид?

В [11] об RGB говорилось - на [11] я и отвечал. А в RGB желтый с синим дает белый, это совершенно точно. Любой древний телевизионщик подтвердит.

И пример дает то же самое. Он строго в RGB и работает, правильно выдает все 7 возможных в RGB цветов: red, yellow, green, cyan, blue, magenta, white. Отенки же этих цветов регулируются яркостью, но в пример я яркость вводить не стал, чтобы не загромождать его.

При желании можно раскопать в инете декодирование цветоразностного телевизионного сигнала в системе СЕКАМ, например. Там есть формула для восстановления яркостного сигнала , только я ее наизусть не помню. По этой формуле и надо вычислять яркость - тогда получим оттенки.


 
Inovet ©   (2009-08-15 11:50) [26]

> [21] Дмитрий С ©   (15.08.09 11:33)
>
> > Вдогонку - желтый с синим должен давать белый, а не зеленый.
>
> Со школы помню, что не белый - точно. :)

Плохо вас в ней учили. См выше.


 
Юрий Зотов ©   (2009-08-15 11:52) [27]

> Anatoly Podgoretsky ©   (15.08.09 11:43) [23]
> Глупо складывать цвета в RGB

Не более глупо, чем не понимать, что под словом "складывать" в топике подразумевается "смешивать". А смешивать цвета вряд ли глупо, даже и в RGB.


 
Юрий Зотов ©   (2009-08-15 11:54) [28]

> TIF ©   (15.08.09 11:38) [22]
> Зависит от кодировки... бррр ))) от цветовой модели то есть

Совершенно верно. Однако, читать надо внимательнее - я отвечал на [11], а там цветовая модель указана.


 
Anatoly Podgoretsky ©   (2009-08-15 11:56) [29]

> Юрий Зотов  (15.08.2009 11:49:25)  [25]

А не восстановление Зеленого из яркостного.


 
Юрий Зотов ©   (2009-08-15 11:59) [30]

> Inovet ©   (15.08.09 11:48) [24]
> Многие люди не понимают разницы между излучением и поглощением

Если я правильно понял, в контексте топика Вы говорите о дополнительных цветах?


 
Юрий Зотов ©   (2009-08-15 12:02) [31]

> Anatoly Podgoretsky ©   (15.08.09 11:56) [29]
> А не восстановление Зеленого из яркостного.

Вроде бы, в [25] я говорил о восстановлении яркостного сигнала из цветовых (точнее, из цветоразностных). Но не наоборот.


 
Anatoly Podgoretsky ©   (2009-08-15 12:18) [32]

> Юрий Зотов  (15.08.2009 12:02:31)  [31]

В [25] Ты говорил про декодирование в СЕКАМ, в СЕКАМ восстанавливается зеленый, формулу можно найти в справочниках. Вот кодирование другое дело, формулы приводились не раз на наших форумах Y = k1*r + k2*g + k3*b. В СЕКАМ же передается Y+R+B воостанавливается зеленый, путем сложения на матрице, обычно резистивной.

ЗЫ: моя первая специальность радиомеханик.


 
vrem   (2009-08-15 12:23) [33]

но всётаки - хорошо ли это - сложение цветов? :)


 
Inovet ©   (2009-08-15 12:33) [34]

> [30] Юрий Зотов ©   (15.08.09 11:59)
> > Inovet ©   (15.08.09 11:48) [24]
> > Многие люди не понимают разницы между излучением и поглощением
>
> Если я правильно понял, в контексте топика Вы говорите о
> дополнительных цветах?

Я это не Ваи - тем у кого путаница. Общие физические принцыпы надо понимать.

Излучение. Надеюсь все знают спектр излучения какой звезды вспринимается человеческим зрением как белый. Под трёхкомпонентное цветовое зрение человека разработаны различные устройства-имитаторы этого спектра, хотя на самом деле он и не совсем белый. Собаке не очень понравиться наш монитор, а некоторым рыбам больше понравится. Красный, зелёный, синий настроеные на наши рецепторы как по частоте, так и по интенсивности, дадут нам белый. RGB

Поглощение. Свет звезды отражаясь от "белого" листа бумаги полностью возвращается в видимом участке спектра. Если мы видим траву зелёной, значит она хорошо поглощает красный и синий. Таким образом можно на белом листе с помощью поглощения красками создать желаемую палитру. То же самое поглощение при прохождении света через вещество.  Это будет белый - красный = зелёный + синий = голубой (циан), белый - зелёный = красный + синий = пурпурный (магента), белый - синий = красный + зелёный = жёлтый. И по техническим причинам белый - красный - зелёный - синий = чёрный. CMYK.


 
TIF ©   (2009-08-15 12:34) [35]

> хорошо ли это - сложение цветов? :)

Смотря что с чем складывать и для чего, imho


 
DVM ©   (2009-08-15 12:38) [36]


> Дмитрий С ©   (15.08.09 06:28) [17]


> Ну эт уже прозрачность.

Мне кажется один хрен. Если в моей функции поставить Rate = 0.5 то выйдет смешение.


 
Юрий Зотов ©   (2009-08-15 12:40) [37]

> Anatoly Podgoretsky ©   (15.08.09 12:18) [32]
> в СЕКАМ восстанавливается зеленый

Посмотрел, освежил память. Согласен.


 
Inovet ©   (2009-08-15 12:41) [38]

> [32] Anatoly Podgoretsky ©   (15.08.09 12:18)
> > Юрий Зотов  (15.08.2009 12:02:31)  [31]
>
> В [25] Ты говорил про декодирование в СЕКАМ, в СЕКАМ восстанавливается
> зеленый, формулу можно найти в справочниках. Вот кодирование
> другое дело, формулы приводились не раз на наших форумах
> Y = k1*r + k2*g + k3*b. В СЕКАМ же передается Y+R+B воостанавливается
> зеленый, путем сложения на матрице, обычно резистивной.
>
> ЗЫ: моя первая специальность радиомеханик.

Ну это всё извращения ради впихивания в полосу канала и совместимости с чёрнобелыми приёмниками, одна причина. Другая, глаз воспринимает цветовыми рецепторами около 20% остальное только по интенсивности.


 
Anatoly Podgoretsky ©   (2009-08-15 13:16) [39]

> Юрий Зотов  (15.08.2009 12:40:37)  [37]

Можно и ЮЗ иногда уговорить :-)


 
XcCCC   (2009-08-15 13:26) [40]

[20] Вдогонку - желтый с синим должен давать белый, а не зеленый.

это как ? я смешиваю 2 краски с желтым и синим, ну никак не белую не получить!
Оговорюсь мне нужно смешивать реальные краски в банке.
Желтый с синим дает серый по функции

function GetMixColor (c1, c2: TColor): TColor;
begin
Result := RGB (
                (GetRValue (c1) + GetRValue (c2)) div 2,
                (GetGValue (c1) + GetGValue (c2)) div 2,
                (GetBValue (c1) + GetBValue (c2)) div 2
              );
end;


что скорее так и есть
синий+красный=фиолетовый
синий+белый=светло синий

Теперь мучаюсь добавить в формулу процентное соотношение.
Изначально в формуле 1:1
Буду думать как сделать к примеру 1:2, 1:3, 2:3, 1:4, 3:4


 
Дмитрий С ©   (2009-08-15 13:30) [41]


> Юрий Зотов ©   (15.08.09 12:40) [37]

А ты реально не понимаешь что я хочу сказать или притворяешься?
Возьми два прозрачных цветных стекла. Синее или Желтое. совмести и посмотри на просвет. Какой получится? Белый?


 
Дмитрий С ©   (2009-08-15 13:32) [42]


> Желтый с синим дает серый по функции
>
> function GetMixColor (c1, c2: TColor): TColor;
> begin
> Result := RGB (
>                 (GetRValue (c1) + GetRValue (c2)) div 2,
>
>                 (GetGValue (c1) + GetGValue (c2)) div 2,
>
>                 (GetBValue (c1) + GetBValue (c2)) div 2
>               );
> end;
>
> что скорее так и есть

Что тебе нужно то?


 
Юрий Зотов ©   (2009-08-15 13:33) [43]

Вот слегка модифицированный пример - введены оттенки цветов (то есть, яркость). На форму дополнительно кинуть TrackBar, назначить ему тот же обработчик OnChange и код этого обработчик слегка подправить:

// OnShow, ComboBoxN.OnChange, TrackBar.OnChange
procedure TForm1.ChangeColor(Sender: TObject);
var
 Y, C1, C2, C3: cardinal;
begin
 Y := MulDiv($FF, TrackBar1.Position, TrackBar1.Max);
 C1 := (Y shl (ComboBox1.ItemIndex * 8));
 C2 := (Y shl (ComboBox2.ItemIndex * 8));
 C3 := (Y shl (ComboBox3.ItemIndex * 8));
 Color := MixColors(C1, C2, C3);
 Caption := IntToHex(Color, 8)
end;


 
vrem   (2009-08-15 13:48) [44]

Дмитрий С ©
наверно он имеет в виду не чисто белый, а зеленовато-белый, яркий, в р-г-б же одинаковые значения сразу всех каналов р, г, б задают оттенки серого

*летают. но низэнько-низэнько :))


 
Дмитрий С ©   (2009-08-15 13:51) [45]

Чуть мозг не взорвал.
Голубой : 00ffff  (не синий блин)
Желтый: ffff00
после обычного GetMixColor чуть выше приведеного действительно дает зеленый оттенок.


 
Дмитрий С ©   (2009-08-15 13:54) [46]


> Юрий Зотов ©   (15.08.09 13:33) [43]

я прекрасно представляю как образуются цвета на экране. Причем тут смешиваение тоды?


 
Юрий Зотов ©   (2009-08-15 14:10) [47]

> XcCCC   (15.08.09 13:26) [40]
> Дмитрий С ©   (15.08.09 13:32) [42]

1. Читайте [24] и [34]. Краска и стекло поглощают, а монитор излучает. Поймите разницу.

Желтая краска (стекло). Поглощают синий, остаются красный и зеленый.
Синяя краска (стекло). Поглощают красный и зеленый, остается синий.

В итоге - если поглощение 100%-ное, то не останется ничего и получим черный. Но в реальности 100%-ного поглощения не бывает, поэтому получаем не черный, а различные оттенки.

Далее. Если реальные (то есть, не 100%-ные) поглощения красного, зеленого и синего идеально одинаковы, то это будет серый цвет (что и наблюдаем в [40]). То есть, именно белый, только с пониженной яркостью.

Если же поглощения красного, зеленого и синего неодинаковые (что в реальности и бывает), то можем получить оттенок любого цвета. Например, очень светлое желтое стекло с очень темным синим стеклом дадут цвет, который глаз воспримет, как все равно синий. А если стекла в сумме поглощают больше синего и красного, то получим как раз зеленый. Да и вообще можем получить любой цвет - все зависит от свойств стекол.

2. Воспроизведите пример с модификацией [43] и подвигайте ползунок яркости. Если останутся вопросы, замените этот ползунок тремя - чтобы регулировалась не общая яркость, а яркость каждого цвета отдельно. Подвигайте ползунки - все увидите сами.

==============

Пример точно воспроизводит смешение цветов в RGB-модели. С некоторой дискретностью, разумеется - потому что в один байт (цвет) нельзя записать дробное значение.


 
Дмитрий С ©   (2009-08-15 14:18) [48]


> Юрий Зотов ©   (15.08.09 14:10) [47]

Нагляднее будет моргать очень быстро. Красный/Зеленый/Красный/Зеленый/... а казаться будет что Желтый.


 
Anatoly Podgoretsky ©   (2009-08-15 18:31) [49]

> XcCCC  (15.08.2009 13:26:40)  [40]

А ты по CMYK смешивай краски в банке


 
Юрий Зотов ©   (2009-08-15 19:25) [50]

Дабы все-таки взлетел...
:o)

Вот полный код формы. Ничего на нее кидать не надо, сразу запускаем.

unit ColorsMixing2;

interface

uses
 Windows, Graphics, Controls, Forms, ComCtrls, ExtCtrls;

type
 TForm1 = class(TForm)
   procedure FormShow(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   tbR, tbG, tbB: TTrackBar;
   Panel: TPanel;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

uses
 Math;

function MixColors(C1, C2: cardinal): cardinal; overload;
var
 R, G, B : byte;
begin
 R := Min(GetRValue(C1) + GetRValue(C2), 255);
 G := Min(GetGValue(C1) + GetGValue(C2), 255);
 B := Min(GetBValue(C1) + GetBValue(C2), 255);
 Result := RGB(R, G, B)
end;

function MixColors(C1, C2, C3: cardinal): cardinal; overload;
var
 C: cardinal;
begin
 C := MixColors(C1, C2);
 Result := MixColors(C, C3)
end;

procedure TForm1.FormShow(Sender: TObject);
var
 CR, CG, CB: cardinal;
begin
 CR := tbR.Max - tbR.Position;
 CG := (tbG.Max - tbG.Position) shl 8;
 CB := (tbB.Max - tbB.Position) shl 16;
 Panel.Color := MixColors(CR, CG, CB);
 Caption := ColorToString(Panel.Color)
end;

procedure TForm1.FormCreate(Sender: TObject);

 function CreateTrackBar(AHint: string; ATabOrder: integer): TTrackBar;
 begin
   Result := TTrackBar.Create(Self);
   with Result  do
   begin
     Parent := Self;
     Orientation := trVertical;
     Align := alLeft;
     TickMarks := tmBoth;
     Width := 40;
     Max := 255;
     Position := 255;
     Frequency := 5;
     PageSize := 51;
     ShowHint := True;
     Hint := AHint;
     TabOrder := ATabOrder;
     OnChange := OnShow
   end
 end;

begin // FormShow
 tbB := CreateTrackBar("Blue", 2);
 tbG := CreateTrackBar("Green", 1);
 tbR := CreateTrackBar("Red", 0);
 Panel := TPanel.Create(Self);
 Panel.Parent := Self;
 Panel.Align := alClient;
 Panel.Caption := ""
end;

end.

Теперь главное - к чему все это.

Панель отображает смесь трех основных цветов - R, G, B. Яркость каждого их этих цветов в их смеси задается соотвествующим ползунком.

Но можно сказать и иначе - панель отображает смесь ДВУХ (а не трех) цветов. Один из них - это основной цвет, задаваемый любым ползунком. А второй из них - это НЕ основной цвет, а смесь двух оставшихся основных цветов в заданной их ползунками пропорции.

Таким образом, наблюдаем смешение любых цветов и их оттенков в модели RGB. Причем обратите внимание на Caption: clYellow + clBlue = clWhite.

Но не clGreen. В полном соответствии с физикой...
:o)


 
XcCCC   (2009-08-16 18:10) [51]

[21]
да всего ничего - подбор нужного цвета для покраски.
И иногда обратная задача есть цвет (вещь перед перед монитор)
задача получении такого же цвета из имеющихся банок (тут оттенки
будут задаватся с помощью частей основных красок)
моник откалиброван есно,
после компа сначала будет проводится опыты на соотвествие угаданного)


 
Inovet ©   (2009-08-16 21:14) [52]

> [51] XcCCC   (16.08.09 18:10)

"Где солнечный рисуя свет / живёт художник и поэт..."
(с) см в ветке о поэзии.


 
Омлет   (2009-08-18 20:09) [53]

http://www.efg2.com/Lab/Graphics/Colors/ColorMix.htm


 
Inovet ©   (2009-08-18 21:45) [54]

Кстати, у мужчит чаще чем у женщин встречается врождённое нарушение цветоощущения, слышал, что чуть ли не у 10% в большей или меньшей степени. Это определяется у окулиста по специальным рисункам.


 
Inovet ©   (2009-08-18 22:23) [55]

> [54] Inovet ©   (18.08.09 21:45)
> по специальным рисункам.

http://sla-avia.narod.ru/rabkin.jpg

Как я понял 1 и 3 столбцы оригинальные, 2 и 4 уже переделаны по цвету, т.е. смотреть надо на оригинал. Не знаю насколько правильно с монитора их смотреть.


 
XcCCC   (2009-08-21 10:58) [56]

http://www.efg2.com/Lab/Graphics/Colors/ScreenColorMixCMY.gif

это кажись верное представление


 
Inovet ©   (2009-08-21 11:15) [57]

> [56] XcCCC   (21.08.09 10:58)
> http://www.efg2.com/Lab/Graphics/Colors/ScreenColorMixCMY.gif
>
> это кажись верное представление

Что верное? Это вычитание из белого.


 
Dimka Maslov ©   (2009-08-21 11:54) [58]


> Dimka Maslov ©   (12.08.09 18:29) [12]


Написано неправильно. На самом деле надо преобразовывать цвет в цветовое простанство HSL (HSB). Вот тогда смешивание цветов  будет выражаться как

H = (H1 + H2 + 1.0) / 2.0;
if H > 1 then H := H - 1;
S = (S1 + S2) / 2.0
L = (L1 + L2) / 2.0



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

Форум: "Прочее";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.63 MB
Время: 0.047 c
2-1251965130
ford
2009-09-03 12:05
2009.10.25
TWebBrowser список ссылок ячейки таблицы


2-1251444270
Grant
2009-08-28 11:24
2009.10.25
Создать класс похожий на TStringList


2-1251500045
sanx
2009-08-29 02:54
2009.10.25
Для изменения boolean в мультипотокс нужны атомарные операции?


4-1220075003
DAS
2008-08-30 09:43
2009.10.25
Как сохранить Html страницу в *.txt зная его URL


15-1251518417
Nic
2009-08-29 08:00
2009.10.25
Западные Финансовые/Деловые СМИ





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский