Это происходит, когда вы пытаетесь получить доступ к элементу массива с синтаксисом с квадратной скобкой, но вы делаете это по строке, а не по массиву, поэтому операция явно не имеет смысла .
Пример:
$var = "test";
echo $var["a_key"];
Если вы считаете, что переменная должна быть массивом, см., где она появляется и исправить там проблему.
"Натуральная влажная краска" немного неоднозначна; смешивание CMYK, как предложено не будет работать, потому что Вы все еще добавляете цвета.
, Если Вы хотите результаты как в Photoshop (как Jon B проверенный) необходимо использовать L*a*b* пространство. Формулы для преобразования RGB в/от Лабораторию и описание здесь .
пространство Лаборатории было специально предназначено так, чтобы линейные изменения соответствовали тому, что человеческий глаз чувствует как определенное количество цветного изменения. Это важно, потому что, например, мы более чувствительны к зеленому, чем другие цвета, потому что мы чувствуем изменения, по-другому зависящие и на оттенке и на легкости и т.д.
Попытка любых других методов, в настоящее время предлагаемых, не только приведет к цветам, которые Вы не хотите, но также и не представите "постоянно выглядящее" изменение в цвете, особенно при использовании этого для чего-то, где постоянное изменение имеет значение как градиент.
Существует хорошая статья для преобразования RGB к L b в C# в http://www.codeproject.com/KB/recipes/colorspace1.aspx .
Вы получаете cmyk<-> rgb преобразование бесплатно с WIC. , но это-.NET 3.0 только