Конференция "Прочее" » сложение цвета
 
  • XcCCC (11.08.09 00:16) [0]
    Задача написать прогу сложения цвета.
    Какие цвета получаются при сложении двух цветов.
    Позже можно каждый цвет в частях указывать для получения оттенков
    color1:=clRed;
    color2:=clYellow;
    Panel1.Color:=color1+color2; ????


    такой алгоритм?
  • М. Береговой (11.08.09 00:20) [1]
    Думаю, надо цвета представлять в виде типа hex ( пример светло-серого #EEEEEE), а потом складывать или вычитать RGB части...
  • XcCCC (11.08.09 00:27) [2]
    хм тогда может представлять цвета в виде трех переменных
    colorR:= (byte)
    colorG:= (byte)
    colorB:= (byte)
    константы на каждый цвет посмотреть в фотошопе
    слаживать это как, а если переполнение что делать?
    colorR1+colorR2:= 200+100= 300>255
  • boa_kaa © (11.08.09 01:02) [3]
  • Inovet © (11.08.09 01:12) [4]
  • Ega23 © (11.08.09 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 (11.08.09 02:11) [6]
    спасибо! а я не знал как сформулировать запрос яндекху
    градент не нужен
  • Inovet © (11.08.09 07:19) [7]
    > [6] XcCCC   (11.08.09 02:11)
    > спасибо! а я не знал как сформулировать запрос яндекху
    > градент не нужен

    А в нём типа сложение цветов нет?
  • SPeller © (11.08.09 08:38) [8]
    пользуюсь gdi+ и нафик не надо знать как там эти цвета складываются :)
  • MsGuns © (11.08.09 09:23) [9]
    >Ega23 ©   (11.08.09 02:01) [5]

    Вариант не без недостатков, как, впрочем и вариант Юры Зотова.
    С месяцок назад решал ту же проблему - универсального алгоритма на все цвета и все мониторы и видеокарты не нашел. При  определенной комбинации фонта и кисти надпись почти не видна или не видна вовсе. Причем для кадого способа эти комбинации собственные :)
  • SPeller © (11.08.09 09:50) [10]
    Неплох вариант когда текст выводишь сначала черным, а потом, поверх, с небольшим смещением в 1 пиксель влева-вверх, белым цветом. Правда, это красивее получается на том же gdi+ с антиальязингом или сглаживанием.

    ЗЫ: Попользовался им немного - желания возиться с gdi не осталось :)
  • Дмитрий С © (12.08.09 18:22) [11]
    Желтый с синим должен давать зеленый, не так то просто в ргб сложить два цвета
  • Dimka Maslov © (12.08.09 18:29) [12]
    Простое смешивание цветов:

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

    Для системных цветов типа clWindowText необходимо сначала произвести преобраозвание в RGB.
  • Jeer © (12.08.09 18:43) [13]
    Зависит от модели смешивания - что мы смешивает на просвет или цвет
    В модели RGB смешение аддитивное, т.е. цвет при смешивании осветляется.
    Если хотим получить аналог смешения красок на реальной палитре, то надо перейти сначала в координаты CMY или CMYK, там смешать и вернуть отбратно в RBG для отображения ( смешение будет вычитающим в итоге )
  • Дмитрий С © (12.08.09 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 (15.08.09 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 © (15.08.09 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;

  • Дмитрий С © (15.08.09 06:28) [17]
    <
    > Вот так побыстрее будет:

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

    > XcCCC   (15.08.09 01:02) [15]

    это не дает правильного смешивания.
  • Anatoly Podgoretsky © (15.08.09 10:37) [18]
    > Дмитрий С  (15.08.2009 06:28:17)  [17]

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

    Это он поиздевался.
  • Юрий Зотов © (15.08.09 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;

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

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

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

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

    Кому приходилось настраивать сведение лучей в старых цветных телевизорах - тот знает.
    :o)
  • Дмитрий С © (15.08.09 11:33) [21]

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

    Со школы помню, что не белый - точно. :)
    Надо делать фотошопный эффект multiply в CMYKе, чтобы получить правильное смешение *цветов*, а не лучей.
  • TIF © (15.08.09 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 © (15.08.09 11:43) [23]
    > Юрий Зотов  (15.08.2009 11:20:20)  [20]

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

    Многие люди не понимают разницы между излучением и поглощением, но программистам вроде пора усвоить.
  • Юрий Зотов © (15.08.09 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 © (15.08.09 11:50) [26]
    > [21] Дмитрий С ©   (15.08.09 11:33)
    >
    > > Вдогонку - желтый с синим должен давать белый, а не зеленый.
    >
    > Со школы помню, что не белый - точно. :)

    Плохо вас в ней учили. См выше.
  • Юрий Зотов © (15.08.09 11:52) [27]
    > Anatoly Podgoretsky ©   (15.08.09 11:43) [23]
    > Глупо складывать цвета в RGB

    Не более глупо, чем не понимать, что под словом "складывать" в топике подразумевается "смешивать". А смешивать цвета вряд ли глупо, даже и в RGB.
  • Юрий Зотов © (15.08.09 11:54) [28]
    > TIF ©   (15.08.09 11:38) [22]
    > Зависит от кодировки... бррр ))) от цветовой модели то есть

    Совершенно верно. Однако, читать надо внимательнее - я отвечал на [11], а там цветовая модель указана.
  • Anatoly Podgoretsky © (15.08.09 11:56) [29]
    > Юрий Зотов  (15.08.2009 11:49:25)  [25]

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

    Если я правильно понял, в контексте топика Вы говорите о дополнительных цветах?
  • Юрий Зотов © (15.08.09 12:02) [31]
    > Anatoly Podgoretsky ©   (15.08.09 11:56) [29]
    > А не восстановление Зеленого из яркостного.

    Вроде бы, в [25] я говорил о восстановлении яркостного сигнала из цветовых (точнее, из цветоразностных). Но не наоборот.
  • Anatoly Podgoretsky © (15.08.09 12:18) [32]
    > Юрий Зотов  (15.08.2009 12:02:31)  [31]

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

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

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

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

    Поглощение. Свет звезды отражаясь от "белого" листа бумаги полностью возвращается в видимом участке спектра. Если мы видим траву зелёной, значит она хорошо поглощает красный и синий. Таким образом можно на белом листе с помощью поглощения красками создать желаемую палитру. То же самое поглощение при прохождении света через вещество.  Это будет белый - красный = зелёный + синий = голубой (циан), белый - зелёный = красный + синий = пурпурный (магента), белый - синий = красный + зелёный = жёлтый. И по техническим причинам белый - красный - зелёный - синий = чёрный. CMYK.
  • TIF © (15.08.09 12:34) [35]
    > хорошо ли это - сложение цветов? :)

    Смотря что с чем складывать и для чего, imho
  • DVM © (15.08.09 12:38) [36]

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


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

    Мне кажется один хрен. Если в моей функции поставить Rate = 0.5 то выйдет смешение.
  • Юрий Зотов © (15.08.09 12:40) [37]
    > Anatoly Podgoretsky ©   (15.08.09 12:18) [32]
    > в СЕКАМ восстанавливается зеленый

    Посмотрел, освежил память. Согласен.
  • Inovet © (15.08.09 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 © (15.08.09 13:16) [39]
    > Юрий Зотов  (15.08.2009 12:40:37)  [37]

    Можно и ЮЗ иногда уговорить :-)
  • XcCCC (15.08.09 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
  • Дмитрий С © (15.08.09 13:30) [41]

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

    А ты реально не понимаешь что я хочу сказать или притворяешься?
    Возьми два прозрачных цветных стекла. Синее или Желтое. совмести и посмотри на просвет. Какой получится? Белый?
  • Дмитрий С © (15.08.09 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;
    >
    > что скорее так и есть

    Что тебе нужно то?
  • Юрий Зотов © (15.08.09 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 (15.08.09 13:48) [44]
    Дмитрий С ©
    наверно он имеет в виду не чисто белый, а зеленовато-белый, яркий, в р-г-б же одинаковые значения сразу всех каналов р, г, б задают оттенки серого

    *летают. но низэнько-низэнько :))
  • Дмитрий С © (15.08.09 13:51) [45]
    Чуть мозг не взорвал.
    Голубой : 00ffff  (не синий блин)
    Желтый: ffff00
    после обычного GetMixColor чуть выше приведеного действительно дает зеленый оттенок.
  • Дмитрий С © (15.08.09 13:54) [46]

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

    я прекрасно представляю как образуются цвета на экране. Причем тут смешиваение тоды?
  • Юрий Зотов © (15.08.09 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-модели. С некоторой дискретностью, разумеется - потому что в один байт (цвет) нельзя записать дробное значение.
  • Дмитрий С © (15.08.09 14:18) [48]

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

    Нагляднее будет моргать очень быстро. Красный/Зеленый/Красный/Зеленый/... а казаться будет что Желтый.
  • Anatoly Podgoretsky © (15.08.09 18:31) [49]
    > XcCCC  (15.08.2009 13:26:40)  [40]

    А ты по CMYK смешивай краски в банке
  • Юрий Зотов © (15.08.09 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 (16.08.09 18:10) [51]
    [21]
    да всего ничего - подбор нужного цвета для покраски.
    И иногда обратная задача есть цвет (вещь перед перед монитор)
    задача получении такого же цвета из имеющихся банок (тут оттенки
    будут задаватся с помощью частей основных красок)
    моник откалиброван есно,
    после компа сначала будет проводится опыты на соотвествие угаданного)
  • Inovet © (16.08.09 21:14) [52]
    > [51] XcCCC   (16.08.09 18:10)

    "Где солнечный рисуя свет / живёт художник и поэт..."
    (с) см в ветке о поэзии.
  • Омлет (18.08.09 20:09) [53]
  • Inovet © (18.08.09 21:45) [54]
    Кстати, у мужчит чаще чем у женщин встречается врождённое нарушение цветоощущения, слышал, что чуть ли не у 10% в большей или меньшей степени. Это определяется у окулиста по специальным рисункам.
  • Inovet © (18.08.09 22:23) [55]
    > [54] Inovet ©   (18.08.09 21:45)
    > по специальным рисункам.

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

    Как я понял 1 и 3 столбцы оригинальные, 2 и 4 уже переделаны по цвету, т.е. смотреть надо на оригинал. Не знаю насколько правильно с монитора их смотреть.
  • XcCCC (21.08.09 10:58) [56]
    http://www.efg2.com/Lab/Graphics/Colors/ScreenColorMixCMY.gif

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

    Что верное? Это вычитание из белого.
  • Dimka Maslov © (21.08.09 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
 
Конференция "Прочее" » сложение цвета
Есть новые Нет новых   [119302   +47][b:0][p:0.004]