Страница: 1 |
Страница: 1 |
Вопрос: По какой формуле в винде накладываются изображения
Добавлено: 07.06.07 01:07
Автор вопроса: - MaAs† -™ | ICQ: 233628153
Доброго вам времени суток!
Может ли кто подсказать по какой формуле в винде изображения накладываются друг на друга? в том смысле что скажем есть пиксель цвета R1,G1,B1 и прозрачностью A1, то как будет высчитываться цвет если пиксель "под ним" имеет цвет R2, G2, B2? А то чет никак не могу сам додуматься...
Заранее спасибо.
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #1
Добавлено: 07.06.07 01:55
R2 = R1 + (1 - A1) * R2
Номер ответа: 2
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #2
Добавлено: 07.06.07 02:00
посмотри BLENDFUNCTION (MSDN)
Номер ответа: 3
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #3
Добавлено: 07.06.07 15:50
EUGY,
С этим не соглашусь в корне! Подумай хотя бы логически.
Математически примерно так:
R3 = INT((A1 * R1 + (255 - A1)* R2)/255)
G3 = INT((A1 * G1 + (255 - A1)* G2)/255)
B3 = INT((A1 * G1 + (255 - A1)* G2)/255)
Фактически на ассемблере это должно описываться более лаконично..
А что, если надо рассчитать цвет на пересечении точек с разной прозрачностью (как набор слоев в Фотошоп)? Видимо расчет идет снизу вверх между результирующим цветом и цветом последующего по шкале Z.
Номер ответа: 4
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #4
Добавлено: 07.06.07 18:09
QUOTE]С этим не соглашусь в корне![
И слава Богу.
BLENDFUNCTION
Номер ответа: 5
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #5
Добавлено: 07.06.07 19:13
Если без гаммы - то r = r1 + (r2 - r1) * alpha \ 256. Но на практике нужно гамму учитывать - перед блендингом брать квадратный корень из цветовых коэффицентов, а итоговое значение возводить в квадрат. Естественно, делать это нужно через таблицы.
Номер ответа: 6
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #6
Добавлено: 07.06.07 23:21
R2 = A1 * R1 + (1 - A1) * R2
я бы еще поверил
Номер ответа: 7
Автор ответа:
- MaAs† -™
ICQ: 233628153
Вопросов: 13
Ответов: 29
Профиль | | #7
Добавлено: 08.06.07 00:21
ЗЫ: прога цвета не накладывает, а наоборот...
Номер ответа: 8
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #8
Добавлено: 08.06.07 13:19
Поскольку свет является волновым явлением, мощность светового потока квадратично пропорциональна его амплитуде. А амплидуда у хорошего монитора есть цифровое значение светового коэффицента на входном сигнале. Таким образом 128-я градация серого, имеющая половинную амплитуду от 256-й, на деле в четыре раза слабее последней. Белый свет приближенно можно считать шумом нормального распределения, а по закону наложения таких шумов amp(nrnd+nrnd)=amp(nrnd*sqrt(2)), т.е. средняя амплитуда двух наложенных шумов возрастает в корень квадратный из двух раз по сравнению с оригиналом. Таким образом, сложив две 128-е градации серого, мы получим не белый цвет, а sqrt((128/255)*(128/255)+(128/255)*(128/255))*255 = 181-ю градацию серого. Принцип, думаю, понятен. Создаешь таблицу с 256 значениями, берущую квадратный корень:
For I = 0 To 255
sqrttab(I) = CByte(Int(Sqr(CDbl(I) / 255) * 255 + 0.5))
Next I
А смешивание цветов с использованием таблицы делай как-то так (Значения параметра Alpha - от 0 до 256):
Function BlendValues(ByVal V1&, ByVal V2&, ByVal Alpha& As Long
V1 = V1 * V1 \ 256
BlendValues = sqrttab(Max(Min(V1 + (V2 * V2 \ 256 - V1) * Alpha \ 256, 255), 0))
End Function
Max и Min в принципе необязательны, это для стабильности. Для повышения качества бленда можно увеличить число градаций мощности до 4096, соответственно изменив код.
Номер ответа: 9
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #9
Добавлено: 08.06.07 15:31
Во как загнул. А можно ссылочку типа RTFM?
Номер ответа: 10
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #10
Добавлено: 09.06.07 12:14
Даже не знаю... А зачем?
Номер ответа: 11
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #11
Добавлено: 09.06.07 13:08
Мне тоже интересно, откуда дровишки.
Номер ответа: 12
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #12
Добавлено: 09.06.07 14:13
Да ниоткуда... собственные наблюдения.