private static void ColorPaletteTest(string imagePath, string outputPath, int rows = 4, int columns = 4) { var image = new Bitmap(imagePath); var palette = SmartPalette.Generate(image, rows, columns); var blockHeight = image.Height / rows; var blockWidth = image.Width / columns; var paletteImage = new Bitmap(image.Width, image.Height); for (var i = 0; i < rows; ++i) { for (var j = 0; j < columns; ++j) { var rectangle = new Rectangle(j * blockWidth, i * blockHeight, blockWidth, blockHeight); var blockIndex = (i * rows) + j; var color = palette[blockIndex]; //http://stackoverflow.com/a/12502497/294804 //var colorImage = new Bitmap(rectangle.Width, rectangle.Height); //using (var graphics = Graphics.FromImage(colorImage)) //{ // var block = new Rectangle(0, 0, rectangle.Width, rectangle.Height); // //http://stackoverflow.com/questions/5641078/convert-from-color-to-brush // graphics.FillRectangle(new SolidBrush(color), block); //} //https://msdn.microsoft.com/en-us/library/aa457087.aspx using (var g = Graphics.FromImage(paletteImage)) { //g.DrawImage(colorImage, 0, 0, rectangle, GraphicsUnit.Pixel); //http://stackoverflow.com/a/15889822/294804 g.FillRectangle(new SolidBrush(color), rectangle); } //paletteImage.Save(outputPath + "_" + blockIndex + ".png", ImageFormat.Png); } } paletteImage.Save(outputPath, ImageFormat.Png); }
/// <summary>устанавливает тип и режим диаграммы (влияет на внешний вид) </summary> public void SetDiagramType(bool subDiagramMode) { _subDiagramMode = subDiagramMode; if (!subDiagramMode) { switch (DiagramType) { case DiagramTypeEnum.ColumnGeneral: case DiagramTypeEnum.ColumnDetail: base.Type = ChartType.Combo; break; case DiagramTypeEnum.Map: base.Type = ChartType.Map; base.ChartArea.Background = new Background(Color.FromArgb(142, 195, 236), Color.FromArgb(63, 137, 200), 90); base.LegendBox.Visible = false; break; case DiagramTypeEnum.PieGeneral: base.Type = ChartType.Pies; break; case DiagramTypeEnum.PieDetail: base.Type = ChartType.Pies; base.PaletteName = dotnetCHARTING.WinForms.Palette.Two; break; case DiagramTypeEnum.Graph: base.Type = ChartType.Combo; base.DefaultSeries.Type = SeriesType.Line; break; case DiagramTypeEnum.Speedometer: this.YAxis.Markers.Clear(); base.Type = ChartType.Gauges; base.LegendBox.Position = LegendBoxPosition.None; base.DefaultSeries.Background.Color = Color.White; base.ClipGauges = false; base.Use3D = true; foreach (ValueRange r in _valueRange) { AxisMarker am = new AxisMarker("", new Background(r.Color), r.MinValue, r.MaxValue); base.YAxis.Markers.Add(am); } break; case DiagramTypeEnum.TrafficLight: base.Type = ChartType.Gauges; base.DefaultSeries.GaugeType = GaugeType.IndicatorLight; base.LegendBox.Visible = false; //base.ChartArea.ClearColors(); base.DefaultSeries.GaugeBorderShape = GaugeBorderShape.UseBox; base.DefaultSeries.GaugeBorderBox.DefaultCorner = BoxCorner.Round; base.DefaultSeries.GaugeBorderBox.Background.Color = Color.FromArgb(20, Color.Blue); base.DefaultElement.SmartLabel.Color = Color.Black; base.XAxis.Orientation = dotnetCHARTING.WinForms.Orientation.Top; SmartPalette sp = new SmartPalette(); foreach (ValueRange r in _valueRange) { SmartColor sc = new SmartColor(r.Color, new ScaleRange(r.MinValue, r.MaxValue)); sp.Add("*", sc); } base.SmartPalette = sp; break; default: throw new NotSupportedException("Данный тип не поддерживается"); } } else { switch (SubDiagramType) { case SubDiagramTypeEnum.ColumnDetail: base.Type = ChartType.Combo; break; case SubDiagramTypeEnum.PieDetail: base.Type = ChartType.Pies; break; case SubDiagramTypeEnum.Graph: base.Type = ChartType.Combo; base.DefaultSeries.Type = SeriesType.Line; break; default: throw new NotSupportedException("Данный тип для детализации не поддерживается"); } } }