Рейтинг:
1
Patrice T
Вы можете попробовать вычислить среднее значение 2 цветов
Col.Red= (One.Red+ Two.Red)/ 2;
...
Member 11841791
Сочетание красного и желтого, чтобы получить оранжевый, не работает таким образом. :/
Member 11841791
Ого, средства смешивания, кажется, имеют причудливые названия. Спасибо за разъяснение!
Member 11841791
Также это то, что .Функция Lerp делает это. Он в основном перемещает один цвет в другой цвет с заданным значением. (0.5 f) в вашем примере.
0x01AA
Я не стал подавать пример :-)
Member 11841791
Нет, ха-ха, я имел в виду парня, который написал ответ.
Member 11841791
О, круто, я наконец-то нашел что-то на странице 5000 в Google. http://stackoverflow.com/questions/1351442/is-there-an-algorithm-for-color-mixing-that-works-like-mixing-real-colors
NewColor.Р = (Цвет1.Р * Цв2.Р)/255
Новый цвет.Г = (Цвет1.Г * Цв2.Г)/255
Новый цвет.Б = (Цвет1.Б * Цв2.Б)/255
Я попробую и посмотрю, что можно придумать.
Моя нынешняя функция.
public static Color MixColorsSubtractive(цвет A, цвет B)
{
возврат новый цвет(А. Р * Б. Р / 255, А. Г * Б. Г / 255, А. Б * Б. Б / 255, (1-ый этаж / (255 * 255)) * - А. А * Б.);
}
0x01AA
Что касается ссылки Stackoverflow: я не читал ее внимательно,поэтому не могу судить. Но с этим (цитата):
"Правильный ответ-нет, потому что нет правильной рабочей модели того, как "смешение цветов в реальном мире" действительно работает. Она слишком сложна и условна и совсем не похожа на простые красно-сине-желтые вещи, которые мы изучали в школе (на самом деле для ее решения требуется вся химия и много физики и биологии)."
Я не согласен, по крайней мере, в данный момент.
Я подумаю над вашим вопросом и постараюсь ответить, но для этого нужно некоторое время ;)
Н.б.: я не совсем понимаю, в чем вы видите проблему с Альфа-смесью... есть еще какая-нибудь информация с вашей стороны?
Member 11841791
О, на самом деле никакой проблемы нет. Я просто предполагаю, что в реальном мире, чем "прозрачнее" ваш цвет, тем прозрачнее будет полученная смесь. Но я не настоящий художник,так что не спрашивай. Сначала я попробую обойтись без всей этой "Альфы" или сделки.
И я с вами согласен. Это не так уж сложно, и, как всегда говорил один отличный парень, математика есть во всем. Мысль Альфа на самом деле не является термином краски, потому что Альфа в реальном мире была бы светом - что не является субтрактивным смешиванием.
Я также закончил исправлять все существующие ошибки в моем приложении, и тогда я узнаю, насколько хорошо оно работает.
Member 11841791
Ладно, я только сейчас поняла, что имела в виду под Альфой. (Извините, когда я программирую свой английский или языковые навыки в целом просто падают до 20%.) Альфа, о которой я упоминал ранее, должна была быть, когда дело доходит до водной краски, но сейчас я был бы счастлив просто иметь обычную краску.
В коде, который я вам дал, есть проблема, и проблема в том, что когда дело доходит до полных цветов, например: (255, 0, 0) (красный) и (0, 0, 255) (синий), он должен быть фиолетовым.
Однако, поскольку эти значения равны 0, когда он делает Red. R * Blue.R он вернет 0, а значит, и черный. Я думаю, что есть уродливый способ исправить это, сделав минимум 1, в любом случае это не работает должным образом.
Patrice T
Я думаю, что это может быть решением