Чтобы обновить значение ModelState
, сначала необходимо сбросить ModelState
следующим образом:
// if only str is provided
if (string.IsNullOrEmpty(item.KeyInfo) && !string.IsNullOrEmpty(str))
{
ModelState.Clear();
Helpers.FillItemModel(item, str); //fill data
}
ModelState.Clear()
сбросит всю модель. Если вы не хотите этого и просто хотите обновить значение нескольких полей, оставив неизменным значение другого поля, используйте ModelState["fieldName"].Value = "newValue
в своем классе помощника.
Смешивание альфы является одной из тех тем, которая имеет больше глубины, чем Вы могли бы думать. Это зависит от того, что альфа-значение означает в Вашей системе, и если Вы не угадаете, то затем Вы закончите с результатами, которые смотрят отчасти хорошо, но тот дисплей странные артефакты.
Проверьте Носильщика и классическую статью Вареного пудинга, "Составляющую Цифровые изображения" для большого, читаемого обсуждения и всех формул. Вы, вероятно, хотите "по" оператору.
Это кажется на выполнение чего-то ближе к объемной визуализации. Для формулы и ссылок, посмотрите Графику FAQ, вопрос 5.16, "Как я выполняю объемную визуализацию?".
Существуют различные возможные способы сделать это, в зависимости от того, как значения RGBA на самом деле представляют свойства материалов.
Вот возможный алгоритм. Запустите с заключительных пиксельных цветов lightr=lightg=lightb=0
, lightleft=1
;
Для каждого r, g, b, пиксель, с которым встречаются, оценивает:
lightr += lightleft*r*(1-a)
lightg += lightleft*g*(1-a)
lightb += lightleft*b*(1-a)
lightleft *= 1-a;
(Значения RGBA нормализованы между 0 и 1, и я предполагаю, что непрозрачное средство a=1, a=0 означает совершенно прозрачный),
Если первый пиксель, с которым встречаются, является синим с непрозрачностью 50%, то 50% доступного цвета установлены на синий, и остальные неизвестные. Если красный пиксель с непрозрачностью, 50% являются следующими, то 25% остающегося света установлены на красный, таким образом, пиксель имеет 50%-й синий, 25%-й красный цвет. Если зеленый пиксель с непрозрачностью, 60% являются следующими, то пиксель является 50%-м синим, 25%-м красным, 15%-м зеленым цветом, с 10% легкого остающегося.
Физические материалы, которые соответствуют этой функции, являются световым излучением, но частично непрозрачными материалами: таким образом пиксель посреди стека никогда не может затемнять итоговый цвет: это может только предотвратить свет позади него от увеличения итогового цвета (будучи черным и полностью непрозрачным).