* ngFor выставляет несколько переменных, которые вы можете увидеть здесь .
Нас интересует first
:
. Имейте в виду, что yourConditionsToBeSelected()
- это метод заполнителя, который вы должны создать при любых условиях (например, «не выбран ни один другой элемент»). ", или" этот элемент выбран ", или" selectedRep4Hour == rep4Hour
", что бы это ни значило) и получает логическое значение, указывающее, является ли это первый элемент или нет.
Любой дополнительный вопрос, просто дайте мне знать, и я уточню
Если у Вас есть список известных цветов с именами, Вы видите, какой из тех известных окрашивает, данный целевой цвет является 'самым близким' к, с помощью функции 'близости' вроде (код F#):
let Diff (c1:Color) (c2:Color) =
let dr = (c1.R - c2.R) |> int
let dg = (c1.G - c2.G) |> int
let db = (c1.B - c2.B) |> int
dr*dr + dg*dg + db*db
Какой бы ни один из известных цветов имеет самую маленькую разность к целевому цвету, Вы хотите назвать, использовать то имя.
Я лично нахожу более естественным думать о цветах с точки зрения оттенка/насыщенности/яркости, чем значения RGB, и я думаю, что это работало бы хорошо на Вас в этом случае. Попробуйте это:
Присвойте названия цвета к определенным диапазонам спектра, как Вы считаете целесообразным. Например, возможно, красный 0-39, оранжевый 40-79, и т.д. (это - произвольные числа - я понятия не имею, соответствуют ли они на каком-либо виде масштаба или не). Затем вычислите оттенок от своего значения RGB (можно найти формулу здесь, хотя могут быть другие). После того как Вы знаете оттенок, Вы знаете, в каком диапазоне спектра это находится, и можно дать ему имя.
Ну, Красный/Зеленый/Синий довольно легки определить контролем; какой диапазон значений необходимо поддерживать?
Проблема состоит в том, что, если Вы не запускаете с именованного цвета, очень трудно возвратиться к одному; IsNamedColor
возвратит false, даже если Вы создадите очевидный цвет через FromArgb.
Если Вам только нужны фактические ожидаемые стандартные цвета, Вы могли бы перечислить известные цвета через отражение?
Color test = Color.FromArgb(255,0,0);
Color known = (
from prop in typeof(Color)
.GetProperties(BindingFlags.Public | BindingFlags.Static)
where prop.PropertyType == typeof(Color)
let color = (Color)prop.GetValue(null, null)
where color.A == test.A && color.R == test.R
&& color.G == test.G && color.B == test.B
select color)
.FirstOrDefault();
Console.WriteLine(known.Name);
Вы могли бы также смочь использовать этот подход в качестве источника известных цветов для более сложного алгоритма.