PdfSharp 图表 - 删除边框和背景

问题描述 投票:0回答:2

我正在使用 PdfSharp 图表,图表容器有蓝色边框和渐变背景。我寻找设置这些选项的属性,但没有成功。我可以更改图表本身中的多个内容,但不能更改容器。 如何去除边框和背景?

谢谢!

enter image description here

我再次查找图表容器的属性,但没有成功。 这是我到目前为止的代码:

public static Chart ColumnChart(PdfChartValues pdfChartValues)
        {
            Chart chart = new Chart(ChartType.Column2D);
            chart.Font.Size = 7;
            chart.PlotArea.FillFormat.Color = XColors.White;
            chart.Legend.Docking = DockingType.Bottom;

            XSeries xSeries = chart.XValues.AddXSeries();
            xSeries.Add(pdfChartValues.XSeriesText);

            Series series;
            foreach (var item in pdfChartValues.ChartSeriesValues)
            {
                series = chart.SeriesCollection.AddSeries();
                series.Name = item.SeriesName;
                series.Add(item.SeriesValues);
                series.FillFormat.Color = XColor.FromArgb(item.RedValue, item.GreenValue, item.BlueValue); // Bar color
            }

            chart.XAxis.HasMajorGridlines = false;
            chart.XAxis.MajorTickMark = TickMarkType.None;
            chart.XAxis.Title.Caption = pdfChartValues.TitleCaption;

            chart.YAxis.MajorTickMark = TickMarkType.None;
            chart.YAxis.MajorTick = pdfChartValues.YAxisMajorTick;
            chart.YAxis.HasMajorGridlines = true;
            chart.YAxis.MajorGridlines.LineFormat.Color = XColors.LightGray;

            chart.PlotArea.LineFormat.Color = XColors.LightGray;
            chart.PlotArea.LineFormat.Width = 1;
            chart.PlotArea.LineFormat.Visible = true;

            chart.DataLabel.Type = DataLabelType.Value;
            chart.DataLabel.Position = DataLabelPosition.OutsideEnd;
            chart.DataLabel.Format = pdfChartValues.SetMoneyFormat ? "$0" : "##,#";

            return chart;
        }
charts pdfsharp
2个回答
0
投票

颜色似乎是硬编码在 ChartFrame.cs 中。
它们还不能使用属性来设置。

获取 PDFsharp 源代码,更改颜色,然后编译。


0
投票

该边框似乎来自 ChartFrame。正如另一个答案所示,边界似乎是硬编码的。您可以简单地复制并修改 ChartFrame.cs 中的代码(如果您按住 Ctrl 键并单击,VS 将为您反编译)。我认为 Chart 的所有示例代码都显示使用 ChartFrame,它旨在处理多个图表。如果您只想绘制一张图表,请使用 DrawChart() 而不是 Draw() - 它将绘制一张没有边框或背景的图表。

var chartFrame = new ChartFrame(position);

chartFrame.Add(chart);

//chartFrame.Draw(gfx); // draw multiple charts with ugly border

chartFrame.DrawChart(gfx); // draw first chart without border
© www.soinside.com 2019 - 2024. All rights reserved.