private void OnCustomDrawSeriesPoint(object sender, CustomDrawSeriesPointEventArgs e)
        {
            // Design a series marker image.
            Bitmap image      = new Bitmap(totalWidth, totalHeight);
            bool   isSelected = trackedPointArgument != null && e.SeriesPoint.Argument.Equals(trackedPointArgument);

            using (Graphics graphics = Graphics.FromImage(image)) {
                using (var fillBrush = isSelected ? (Brush) new HatchBrush(HatchStyle.DarkDownwardDiagonal,
                                                                           e.LegendDrawOptions.Color,
                                                                           e.LegendDrawOptions.ActualColor2)
                                                  : (Brush) new SolidBrush(e.LegendDrawOptions.Color)) {
                    graphics.FillRectangle(fillBrush, totalRect);
                }
                Image photo;
                if (photoCache.TryGetValue(e.SeriesPoint.Argument, out photo))
                {
                    graphics.DrawImage(photo, photoRect);
                }
            }

            e.LegendMarkerImage        = image;
            e.DisposeLegendMarkerImage = true;

            PieDrawOptions options = e.SeriesDrawOptions as PieDrawOptions;

            if (isSelected && options != null)
            {
                options.FillStyle.FillMode = DevExpress.XtraCharts.FillMode.Hatch;
                ((HatchFillOptions)options.FillStyle.Options).HatchStyle = HatchStyle.DarkDownwardDiagonal;
            }
        }
Пример #2
0
 /// <summary>
 /// 设置饼状图的Series以及Legend颜色
 /// </summary>
 /// <param name="chart">ChartControl</param>
 /// <param name="setColorHander">委托;参数顺序【DrawOptions,LegendDrawOptions,SeriesPoint】</param>
 public static void SetPieSeriesColor(this  ChartControl chart, Action <PieDrawOptions, PieDrawOptions, SeriesPoint> setColorHander)
 {
     //eg:
     //chartControl1.SetPieSeriesColor((drawOptions, legendDrawOptions, seriesPoint) =>
     //{
     //    if (seriesPoint.Argument == "A")
     //    {
     //        drawOptions.Color = Color.Red;
     //        legendDrawOptions.Color = Color.Red;
     //    }
     //    if (seriesPoint.Argument == "B")
     //    {
     //        drawOptions.Color = Color.Yellow;
     //        legendDrawOptions.Color = Color.Yellow;
     //    }
     //    if (seriesPoint.Argument == "C")
     //    {
     //        drawOptions.Color = Color.Gray;
     //        legendDrawOptions.Color = Color.Gray;
     //    }
     //    if (seriesPoint.Argument == "D")
     //    {
     //        drawOptions.Color = Color.Green;
     //        legendDrawOptions.Color = Color.Green;
     //    }
     //    if (seriesPoint.Argument == "E")
     //    {
     //        drawOptions.Color = Color.Blue;
     //        legendDrawOptions.Color = Color.Blue;
     //    }
     //});
     chart.CustomDrawSeriesPoint += (sender, e) =>
     {
         if (e.SeriesDrawOptions is PieDrawOptions)
         {
             PieDrawOptions _drawOptions       = e.SeriesDrawOptions as PieDrawOptions;
             PieDrawOptions _legendDrawOptions = e.LegendDrawOptions as PieDrawOptions;
             _drawOptions.FillStyle.FillMode       = FillMode.Solid;
             _legendDrawOptions.FillStyle.FillMode = FillMode.Solid;
             setColorHander(_drawOptions, _legendDrawOptions, e.SeriesPoint);
         }
     };
 }