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; } }
/// <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); } }; }