цвет гармония
Смешивание цветов -> Форум на Исходниках.Руhtml { overflow-x: auto }.mstop {BORDER-RIGHT: #000 1px dotted; PADDING-RIGHT: 3px; BORDER-TOP: #000 1px dotted; PADDING-LEFT: 3px; FONT-WEIGHT: bold; FONT-SIZE: 10px; BACKGROUND: #e4eaf2; PADDING-BOTTOM: 3px; MARGIN: 8px auto 0px; BORDER-LEFT: #8394b2 4px solid; COLOR: #000; PADDING-TOP: 3px; BORDER-BOTTOM: 0px}.msmain {BORDER-RIGHT: #000 1px dotted; PADDING-RIGHT: 4px; BORDER-TOP: 0px; PADDING-LEFT: 4px; BACKGROUND: #fafcfe; PADDING-BOTTOM: 4px; MARGIN: 0px auto 8px; BORDER-LEFT: #8394b2 4px solid; COLOR: #465584; PADDING-TOP: 4px; BORDER-BOTTOM: #000 1px dotted}.gmstop {BORDER-RIGHT: #000 1px dotted; PADDING-RIGHT: 3px; BORDER-TOP: #000 1px dotted; PADDING-LEFT: 3px; FONT-WEIGHT: bold; FONT-SIZE: 10px; BACKGROUND: #faa298; PADDING-BOTTOM: 3px; MARGIN: 8px auto 0px; BORDER-LEFT: #8394b2 4px solid; COLOR: #000; PADDING-TOP: 3px; BORDER-BOTTOM: 0px}.gmsmain {BORDER-RIGHT: #000 1px dotted; PADDING-RIGHT: 4px; BORDER-TOP: 0px; PADDING-LEFT: 4px; BACKGROUND: #fafcfe; PADDING-BOTTOM: 4px; MARGIN: 0px auto 8px; BORDER-LEFT: #8394b2 4px solid; COLOR: #465584; PADDING-TOP: 4px; BORDER-BOTTOM: #000 1px dotted}form { display: inline }img { vertical-align: middle; border: 0px }BODY { font-family: Verdana, Tahoma, Arial, sans-serif; font-size: 11px; color: #000; margin: 0px 10px 0px 10px; background-color: #FFF }TABLE, TR, TD { font-family: Verdana, Tahoma, Arial, sans-serif; font-size: 11px; color: #000 }a:link, a:active, a:visited { text-decoration: underline; color: #000000 }a:hover { color: #CC3333 }.spoiler {FONT-FAMILY: Verdana, Tahoma, Arial, sans-serif;FONT-SIZE: 11px;BORDER: #333333 1px solid;COLOR: #666666;BACKGROUND-COLOR: #666666;}fieldset.search { padding: 6px; line-height: 150% }label { cursor: pointer }img.attach { border: 2px outset #EEF2F7; padding: 2px }.googleroot { padding: 6px; line-height: 130% }.googlechild { padding: 6px; margin-left: 30px; line-height: 130% }.googlebottom, .googlebottom a:link, .googlebottom a:visited, .googlebottom a:active { font-size: 11px; color: #3A4F6C }.googlish, .googlish a:link, .googlish a:visited, .googlish a:active { font-size: 14px; font-weight: bold; color: #00D }.googlepagelinks { font-size: 1.1em; letter-spacing: 1px }.googlesmall, .googlesmall a:link, .googlesmall a:active, .googlesmall a:visited { font-size: 10px; color: #434951 }li.helprow { padding: 0px; margin: 0px 0px 10px 0px }ul#help { padding: 0px 0px 0px 15px }option.cat { font-weight: bold }option.sub { font-weight: bold; color: #555 }.caldate { text-align: right; font-weight: bold; font-size: 11px; color: #777; background-color: #DFE6EF; padding: 4px; margin: 0px }.warngood { color: green }.warnbad { color: red }#padandcenter { margin-left: auto; margin-right: auto; text-align: center; padding: 14px 0px 14px 0px }#profilename { font-size: 28px; font-weight: bold }#calendarname { font-size: 22px; font-weight: bold }#photowrap { padding: 6px }#phototitle { font-size: 24px; border-bottom: 1px solid black }#photoimg { text-align: center; margin-top: 15px }#ucpmenu { line-height: 150%; width: 22%; border: 1px solid #345487; background-color: #F5F9FD }#ucpmenu p { padding: 2px 5px 6px 9px; margin: 0px }#ucpcontent { background-color: #F5F9FD; border: 1px solid #345487; line-height: 150%; width: auto }#ucpcontent p { padding: 10px; margin: 0px }#ipsbanner { position: absolute; top: 1px; right: 5% }#logostrip { border: 1px solid #345487; background-color: #6EA1E3; padding: 0px; margin: 0px }.logo { color: #FFFFFF }.logo a:link, .logo a:visited, .logo a:active { text-decoration: none; color: #FFFFFF }.logo a:hover { text-decoration: underline; color: #000000 }#submenu { border: 1px solid #BCD0ED; background-color: #DFE6EF; font-size: 10px; margin: 3px 0px 3px 0px; color: #3A4F6C; font-weight: bold }#submenu a:link, #submenu a:visited, #submenu a:active { font-weight: bold; font-size: 10px; text-decoration: none; color: #3A4F6C }#userlinks { border: 1px solid #C2CFDF; background-color: #F0F5FA }#navstrip { font-weight: bold; padding: 6px 0px 6px 0px }.activeuserstrip { background-color: #BCD0ED; padding: 6px }.pformstrip { background-color: #D1DCEB; color: #3A4F6C; font-weight: bold; padding: 7px; margin-top: 1px }.pformleft { background-color: #F5F9FD; padding: 6px; margin-top: 1px; width: 10%; border-top: 1px solid #C2CFDF; border-right: 1px solid #C2CFDF }.pformleftw { background-color: #F5F9FD; padding: 6px; margin-top: 1px; width: 40%; border-top: 1px solid #C2CFDF; border-right: 1px solid #C2CFDF }.pformright { background-color: #F5F9FD; padding: 6px; margin-top: 1px; border-top: 1px solid #C2CFDF }.post1 { background-color: #F8F8FD }.post2 { background-color: #E7E9EE }.postlinksbar { background-color: #D1DCEB; padding: 7px; margin-top: 1px; font-size: 10px }.row1 { background-color: #F5F9FD }.row2 { background-color: #DFE6EF }.row3 { background-color: #EEF2F7 }.row4 { background-color: #E4EAF2 }.pinned_topic { background-color: #D1DCEB }.darkrow1 { background-color: #6EA1E3 }.darkrow2 { background-color: #BCD0ED; color: #3A4F6C }.darkrow3 { background-color: #D1DCEB; color: #3A4F6C }.hlight { background-color: #DFE6EF }.dlight { background-color: #EEF2F7 }.titlemedium { font-weight: bold; color: #3A4F6C; background-color: #D1DCEB; padding: 7px; margin: 0px }.titlemedium a:link, .titlemedium a:visited, .titlemedium a:active { text-decoration: underline; color: #3A4F6C }.maintitle { color: #FFFFFF; background-color: #6EA1E3; vertical-align: middle; font-weight: bold; letter-spacing: 1px; font-size: 12px; padding-top: 8px; padding-bottom: 8px; padding-left: 6px }.maintitle a:link, .maintitle a:visited, .maintitle a:active { text-decoration: none; color: #FFFFFF }.maintitle a:hover { text-decoration: underline }.plainborder { border: 1px solid #345487; background-color: #F5F9FD }.tableborder { border: 1px solid #345487; background-color: #6EA1E3; padding: 0; margin: 0 }.tablefill { border: 1px solid #345487; background-color: #F5F9FD; padding: 6px }.tablepad { background-color: #F5F9FD; padding: 6px }.tablebasic { width: 100%; padding: 0px 0px 0px 0px; margin: 0px; border: 0px }.wrapmini { float: left; line-height: 1.5em; width: 25% }.pagelinks { float: left; line-height: 1.2em; width: 35% }.desc { font-size: 10px; color: #434951 }.edit { font-size: 9px }.signature { font-size: 10px; color: #999999; line-height: 150% }.postdetails { font-size: 10px }.postcolor { font-size: 12px; line-height: 160% }.normalname { font-size: 12px; font-weight: bold; color: #003 }.normalname a:link, .normalname a:visited, .normalname a:active { font-size: 12px }.unreg { font-size: 11px; font-weight: bold; color: #900 }.searchlite { font-weight: bold; color: #F00; background-color: #FF0 }#QUOTE { font-family: Verdana, Arial; font-size: 11px; color: #465584; background-color: #FAFCFE; border: 1px solid #000; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; overflow: auto; }#CODE {font-family: Courier New, serif;font-size: 11px;color: #465584;background-color: #FAFCFE;border: 1px solid #000;line-height: 120%;padding-top: 2px;padding-right: 2px;padding-bottom: 2px;padding-left: 2px;overflow: auto;}TABLE.post_table {background-color: #345487;vertical-align:top;}TABLE.post_table TD{background-color: #CCC;padding: 3px 3px 3px 3px;}TABLE.post_table TH{background-color: #9FBCE3;padding: 3px 3px 3px 3px;}.copyright { font-family: Verdana, Tahoma, Arial, Sans-Serif; font-size: 9px; line-height: 12px }.codebuttons { font-size: 10px; font-family: verdana, helvetica, sans-serif; vertical-align: middle }.forminput, .radiobutton, .checkbox { font-size: 11px; font-family: verdana, helvetica, sans-serif; vertical-align: middle }.textinput { background-color: #E4EAF2; font-size: 12px; font-family: courier new, serif; vertical-align: middle }.thin { padding: 6px 0px 6px 0px; line-height: 140%; margin: 2px 0px 2px 0px; border-top: 1px solid #FFF; border-bottom: 1px solid #FFF }.purple { color: purple; font-weight: bold }.red { color: red; font-weight: bold }.green { color: green; font-weight: bold }.blue { color: blue; font-weight: bold }.orange { color: #F90; font-weight: bold }.voteprefix {color:green}.movedprefix {color:red}.clubprefix {color:blue}.pinnedprefix {}
.p{table-layout:fixed}#CODE,pre{margin:0;white-space:-o-pre-wrap;white-space:-moz-pre-wrap;word-wrap:break-word;}PRE {MARGIN: 0px; WORD-WRAP: break-word}
·
Главная
·
Журнал ·
Алгоритмы
·
Естественные Науки
·
Wiki
ПРАВИЛАFAQ
Помощь
Поиск
Участники
Календарь
Избранное
DigiMania
RSSЗдравствуйте, Гость [64.28.181.210]Вход ·Регистрация ·Выслать повторно письмо для активации ·Что даёт регистрация на форуме?
Форум на Исходниках.RU Программирование Delphi Delphi: Multimedia ПРАВИЛА РАЗДЕЛА · FAQ раздела DelphiПожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]! Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:1. Как использовать в программе изображения gif2. Как вопроизвести WAV/MP3/AVI ... (продолжение следует) ...Выразить свое отношение к модераторам раздела можно здесь: D[u]faМодераторы: Dufa, Smike
Ответить · Новое голосование
'> Смешивание цветов, Полупрозрачное накладывание цвета на изображение
Подписаться на тему |
Сообщить другу |
Скачать/распечатать тему
Моральный_урод
Сообщ. #1 от 15.04.08, 07:30
Быстрая цитата · Цитата
Newbie
Профиль · PM
Рейтинг (т): нет
При использовании изображения в качесте фона формы, возникает "цветовая бесскусица", т.е при различных стилях оформления, цветовая гамма рисунка не очень красиво смотрится со стилем (рисунок имеет красный оттенок, цвет гармония стиль синий). Для решения этой проблемы, представляю вашему вниманию процедуру BackImage. Она накладывает на изображение системный цвет (зависящий от стиля оформления). Получается полупрозрачное наложение двух слоёв цвет гармония полная гармония цветов type PRGBArray=^TRGBArray; TRGBArray=array[0..1000000] of TRGBTriple;procedure TForm1.BackImage;varPRGa: PRGBArray;X,Y: Integer;begin//до этого надо запихать битмап в Image1Image1.Picture.Bitmap.PixelFormat:=pf24bit;for Y:=0 to Image1.Picture.Bitmap.Height-1 do beginPRGa:=Image1.Picture.Bitmap.ScanLine[Y];for X:=0 to Image1.Picture.Bitmap.Width-1 dobegin//значение непрозрачности битмапа = 10%//остальные 90% это цвет clBtnFace//color_BtnFace он же clBtnFace PRGa[X].rgbtRed:=(10*PRGa[X].rgbtRed+90*GetRValue(GetSysColor(color_BtnFace))) div 100; PRGa[X].rgbtGreen:=(10*PRGa[X].rgbtGreen+90*GetGValue(GetSysColor(color_BtnFace))) div 100; PRGa[X].rgbtBlue:=(10*PRGa[X].rgbtBlue+90*GetBValue(GetSysColor(color_BtnFace))) div 100;end end;end;ЗЫ если этот код немножко переделать, его можно испол. для смешивания двух цвет гармония более изображений
andriano
Сообщ. #2 от 15.04.08, 21:41
Быстрая цитата · Цитата
Full Member
Профиль · PM
Рейтинг (т): 13
1. Не пробовал посмотреть, что получится, если несколько раз прогнать картинку через этот код, даже для нейтрального в целом результата? Разумнее было бы подумать об алгоритме, СОХРАНЯЮЩЕМ КОНТРАСТНОСТЬ.2. Зачем в каждой точке трижды вызывать GetSysColor?3. Советую перед желением на 100 сначала добавить 50, чтобы происходило округление к ближайшему, цвет гармония не по недостатку.4. И еще один совет по оптимизации:Ritem := 9*GetRValue(GetSysColor(color_BtnFace)) + 5;...for...PRGa[X].rgbtRed := (PRGa[X].rgbtRed + Ritem) div 10;
antonn
Сообщ. #3 от 16.04.08, 00:07
Быстрая цитата · Цитата
Profi
Профиль · PM
Рейтинг (т): 53
Цитата PRGBArray=^TRGBArray;TRGBArray=array[0..1000000] of TRGBTriple;const MaxPixelCount = MaxInt div SizeOf(TRGBTriple);type PRGBArray = ^TRGBArray; TRGBArray = array[0..MaxPixelCount-1] of TRGBTriple;
___________ Моральный_урод
Сообщ. #4 от 17.04.08, 04:05
Быстрая цитата · Цитата
Newbie
Профиль · PM
Рейтинг (т): нет
Спосибо за критику! Всё учту
Моральный_урод
Сообщ. #5 от 17.04.08, 05:16
Быстрая цитата · Цитата
Newbie
Профиль · PM
Рейтинг (т): нет
Цитата Разумнее было бы подумать об алгоритме, СОХРАНЯЮЩЕМ КОНТРАСТНОСТЬЯ как раз, над этим, цвет гармония работал. Пытаюсь сделать эффект умножения/затемнения, как в фотошопе, но не как не могу вычислить зависимость изменения RGB, не хочу преобразовывать изображение в HBL (или HBS)
Dimonka
Сообщ. #6 от 17.04.08, 12:32
Быстрая цитата · Цитата
Junior
Профиль · PM
Рейтинг (т): 4
О способах наложения неплохо написано вот здесь:http://www.pegtop.net/delphi/articles/blendmodes/
Моральный_урод
Сообщ. #7 от 21.04.08, 06:18
Быстрая цитата · Цитата
Newbie
Профиль · PM
Рейтинг (т): нет
Цитата О способах наложения неплохо написано вот здесьТам не то, мне надо именно формулу увеличения насыщенности или изменения контрастности, из цветов RGB.
--Ins--
Сообщ. #8 от 21.04.08, 10:09
Быстрая цитата · Цитата
Senior Member
Профиль · PM
Рейтинг (т): 74
Цитата мне надо именно формулу увеличения насыщенности или изменения контрастности, из цветов RGB.Попробуем порассуждать. Контрастность, по определению, это отношение освещенности самой светлой точки к самой темной. Увеличить контрастность изображения - это сделать все светлые еще светлее, цвет гармония все темные - еще темнее. Т.е. разложи цвета на составляющие (R, G, B), проведи мысленно середину освещенности (значение 127), цвет гармония если значение составляющей больше этой середины - его нужно увеличить, если меньше - уменьшить. На сколько увеличивать/уменьшать? Допустим мы хотим увеличить контрастность в 2 раза. Попробуй так: NewVal := 127 + (NewVal - 127)*2. Разумеется, значение не должно превысить 255 цвет гармония принизить 0, т.е.NewVal := Max(Min((127 + (NewVal - 127) * Scale), 255), 0);
___________ Меньше лазишь в интернете - здоровее будут дети. andriano
Сообщ. #9 от 21.04.08, 20:06
Быстрая цитата · Цитата
Full Member
Профиль · PM
Рейтинг (т): 13
--Ins--, для гадаций серого этот алгоритм будет работать, как нужно (если не считать маленькой оговорки, что для совместимости с ручкой настройки контрастности ламповой техники зачастую синхронно с контрастностью увеличивают цвет гармония яркость, примерно так: NewVal := OldVal*koeff;)Но я лично придерживаюсь мнения, что все равно (не взирая на совместимость) правильна именно формула, приведенная тобой.Но для цветного изображения она будет приводить к изменению насыщенности, поэтому ее надо бы откорректировать.Но прежде, чем думать, как это сделать, неплохо бы сначала представить алгоритм изменения насыщенности.При изменении насыщенности у нас должна сохраняться яркость, поэтому следует вычислить среднюю яркость цвет гармония уже от нее (вместо 127 в твоей формуле) растаскивать цвета.Откуда очевидное усовершенствование приведенной тобой формулы для цветного случая: растащить как указано, яркость, цвет гармония расстояние между цветами оставить неизменным.
Моральный_урод
Сообщ. #10 от 24.04.08, 05:42
Быстрая цитата · Цитата
Newbie
Профиль · PM
Рейтинг (т): нет
Цитата Попробуй так: NewVal := 127 + (NewVal - 127)*2Я уже так пробывал, работает только к уменьшению насыщенности (или контрасности, они похожи), при увеличение же пропорционально изменяются только те два канала, которые дальше от 127, ближайший третий - непонятно как, цвет гармония если он равен 127 - то воще неизвестно увеличевать или уменьшать его (а он изменяется)? Плюс ко всему этому - фотошоп сам не корректно изменяет насыщенность/контрасность, так что методом тыка тут не как - нужна формула.
andriano
Сообщ. #11 от 24.04.08, 19:39
Быстрая цитата · Цитата
Full Member
Профиль · PM
Рейтинг (т): 13
Моральный_урод, формулу можно вывести из тех соображений, что я привел выше.Если это представляется слишком трудным (а сделать это, по хорошему, надо аккуратно с учетом гаммы), то проще будет обойтись двойным преобразованием RGB->HVS->коррекция->RGB.
Моральный_урод
Сообщ. #12 от Сегодня, 04:45
Быстрая цитата · Цитата
Newbie
Профиль · PM
Рейтинг (т): нет
Для этого надо вычислить формулу увелечения насыщенности.Цитата RGB->HVS->коррекция->RGBХочу найти способ без преобразования.
0 пользователей читают эту тему (0 гостей цвет гармония 0 скрытых пользователей)
0 пользователей:
«
Предыдущая тема |
Delphi: Multimedia |
Следующая тема »
Форум на Исходниках.RU · Delphi · Delphi: Multimedia
Быстрый ответ ·
Ответить · Новое голосование
Информация о Госте
Введите ваше имя
Кнопки кодов
ШРИФТ
Arial
Times
Courier
Impact
Geneva
Optima
РАЗМЕР
Малый
Большой
Огромный
ЦВЕТ
Черный
Синий
Красный
Фиолетовый
Оранжевый
Жёлтый
Серый
Зелёный
CODEDelphi / PascalC / C++C++ BuilderVisual BasicC#AssemblerTurbo AssemblerAssembler 8080.RCBAT filesCONsole outputPerlTclPythonHTMLXMLPHPVB ScriptJava ScriptApache configMySQLCSS1C1C-SQLInterface DefinitionInno SetupSQLVisual Basic .NETJavaБез подсветки
Введите сообщение
Смайлы
Показать всё
· Помощь по кодам форума ·
Опции сообщения
Включить смайлы в этом сообщении?
Подписаться на уведомление по этой теме?
[ Script Execution time: 0.2874 ] [ 23 queries used ] [ Generated: 26.04.08, 21:04 ]
Powered by Invision Power Board(U) v1.2 © 2003 IPS, Inc.разделы
дефектоскопия сварной швов
предохранитель пкн
протеин
проект электропроводка
лечение головокружение
инженерный геодезия
купить конвертер
обзвон
иностранный долг
корпоративный иностранный
мачта флагшток
прайс сушильный машина
легранд
классический аэробика
отпуск конец
торговый витрина
lida
фосфорицирующая краска
крановый тележка
сухой мороженый
светодиодный экран
комплексный сайт
паркетный лак
доставка окон
девелоперская компания
асбест хризотиловый
kiev apartments service
срок реализация рак
этнический психология
купить отвед
покрышка бриджстоун
квн съемка
электроинструмент metabo
стимулирующий лотерея
учиться танго
профиль salamander
агат кристи билет
перевод денег
tag heuer
съемный зубной протез
нард короткий
врач-гинеколог
диагностический стенд
катетер
цвет ламината класс 32
купить конвертер
фарфор portofino
трансперсональный психология
любимый цвет
дирижабль
цвет гармония