private readonly ConcurrentDictionary<string, System.Drawing.Color> _colorSet;
public void BuildColorSet(IList<string> colorNames, string prefix, bool forceLastToGray)
{
var size = forceLastToGray ? colorNames.Count - 1 : colorNames.Count;
int nbHue = 6;
int nbCycle = (int)Math.Ceiling((double)size/nbHue);
var saturationMax = nbCycle <= 2 ? 1.0 : 1.0;
var saturationMin = 0.3;
var luminanceMax = nbCycle <= 2 ? 0.85 : 0.85;
var luminanceMin = 0.3;
var maxSaturationShift = 0.30;
var maxLuminanceShift = 0.15;
var interval = 1.0/Math.Min(size, nbHue);
var saturationShift = (saturationMax - saturationMin)/(nbCycle - 1);
saturationShift = Math.Min(saturationShift, maxSaturationShift);
var luminanceShift = (luminanceMax - luminanceMin)/(nbCycle - 1);
luminanceShift = Math.Min(luminanceShift, maxLuminanceShift);
var hueShift = 0.0;
var saturation = saturationMax;
var luminance = luminanceMax;
for(var i = 0; i<size; i++)
{
if(i > 0 && (i % nbHue == 0)) // Next Cycle
{
saturation -= saturationShift;
luminance -= luminanceShift;
hueShift = hueShift == 0 ? interval/2 : 0;
}
var hue = interval*(i%nbHue) + hueShift;
System.Drawing.Color color = HSL2RGB(hue, saturation, luminance);
_colorSet.AddOrUpdate(prefix + colorNames[i], color, ???);
}
if(forceLastToGray)
{
_colorSet.TryAdd(prefix + colorNames[colorNames.Count - 1], System.Drawing.Color.LightGray);
}
_cssDirty = true;
}
Quiero ser capaz de actualizar el diccionario si el color existe con un nuevo valor. Y también agregue al diccionario si el color no está allí en el diccionario.
Estoy usando AddOrUpdate pero no puedo obtener el tercer parámetro (forma la expresión lambda O método delegado) del método AddOrUpdate.
¿Alguna idea de cómo sería mi tercer parámetro?Diccionario concurrente Método AddOrUpdate 3er parámetro?
No tengo idea de lo que estás preguntando. ¿Revisaste la documentación? http://msdn.microsoft.com/en-us/library/ee378665.aspx – asawyer
¿ves el ??? en AddOrUpdate. Ese es el parámetro que me falta. Alguna idea de cómo puedo formar ese parámetro. – Ruruboy
Sí - Lea la documentación. – asawyer