コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: CustomChart.cs プロジェクト: AlexSneg/VIRD-1.0
 /// <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("Данный тип для детализации не поддерживается");
         }
     }
 }