public ClassBreakViewModel() { minimum = 0; classesCount = 5; baseBrush = new GeoSolidBrush(GeoColor.FromHtml("#9ACD32")); endBrush = new GeoSolidBrush(GeoColor.StandardColors.Red); colorFields = new String[] { "Hue", "Saturation", "Lightness" }; selectedColorField = ClassBreakBy.Hue; startColorName = "Start Color"; endColorName = "End Color"; colorPickerVisibility = Visibility.Visible; sliderVisibility = Visibility.Collapsed; }
private Collection <GeoSolidBrush> GetBreakdownBrushes(int breakCount, GeoSolidBrush baseBrush, GeoSolidBrush endBrush, ClassBreakBy breakColorMode) { Collection <GeoSolidBrush> brushes = new Collection <GeoSolidBrush>(); HSL baseHsl = GetHslFromRgb(baseBrush.Color.RedComponent, baseBrush.Color.GreenComponent, baseBrush.Color.BlueComponent); HSL endHsl = null; if (breakColorMode == ClassBreakBy.Hue) { endHsl = GetHslFromRgb(endBrush.Color.RedComponent, endBrush.Color.GreenComponent, endBrush.Color.BlueComponent); var averageH = (endHsl.Hue - baseHsl.Hue) / (breakCount - 1); var averageS = (endHsl.Saturation - baseHsl.Saturation) / (breakCount - 1); var averageL = (endHsl.Luminance - baseHsl.Luminance) / (breakCount - 1); var averageAlpha = (endBrush.Color.AlphaComponent - baseBrush.Color.AlphaComponent) / (breakCount - 1); brushes.Add(baseBrush); for (int i = 1; i <= breakCount - 2; i++) { HSL generatedHsl = new HSL(baseHsl.Hue, baseHsl.Saturation, baseHsl.Luminance); generatedHsl.Hue += averageH * i; generatedHsl.Saturation += averageS * i; generatedHsl.Luminance += averageL * i; brushes.Add(GetSolidBrushFromHsl((byte)((int)baseBrush.Color.AlphaComponent + averageAlpha * i), generatedHsl)); } brushes.Add(endBrush); } else { endHsl = new HSL(baseHsl.Hue, baseHsl.Saturation, baseHsl.Luminance); if (breakColorMode == ClassBreakBy.Saturation) { endHsl.Saturation = this.currentValue; var averageS = (baseHsl.Saturation - currentValue) / (breakCount - 1); brushes.Add(GetSolidBrushFromHsl(baseBrush.Color.AlphaComponent, endHsl)); for (int i = 1; i <= breakCount - 2; i++) { HSL generatedHsl = new HSL(endHsl.Hue, endHsl.Saturation, endHsl.Luminance); generatedHsl.Saturation += averageS * i; brushes.Add(GetSolidBrushFromHsl(baseBrush.Color.AlphaComponent, generatedHsl)); } brushes.Add(baseBrush); } else { endHsl.Luminance = this.currentValue; var averageL = (baseHsl.Luminance - currentValue) / (breakCount - 1); brushes.Add(GetSolidBrushFromHsl(baseBrush.Color.AlphaComponent, endHsl)); for (int i = 1; i <= breakCount - 2; i++) { HSL generatedHsl = new HSL(endHsl.Hue, endHsl.Saturation, endHsl.Luminance); generatedHsl.Luminance += averageL * i; brushes.Add(GetSolidBrushFromHsl(baseBrush.Color.AlphaComponent, generatedHsl)); } brushes.Add(baseBrush); } } return(brushes); }