2

C# アプリケーション内で MigraDoc を使用して作成した次のグラフがあります。

Chart chart = new Chart(ChartType.Bar2D);
chart.Width = "10cm";
chart.Height = "10cm";
Series series = chart.SeriesCollection.AddSeries();
series.Add(new double[] { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 });
XSeries xseries = chart.XValues.AddXSeries();
xseries.Add("A", "B", "C", "D", "E", "F", "G", "H", "I", "J");
chart.XAxis.MajorTickMark = TickMarkType.Outside;
chart.XAxis.Title.Caption = "X-Axis";
chart.YAxis.MajorTickMark = TickMarkType.Outside;
chart.YAxis.HasMajorGridlines = true;
chart.PlotArea.LineFormat.Color = Colors.AliceBlue;
chart.PlotArea.LineFormat.Width = 1;
chart.PlotArea.LineFormat.Visible = true;
MigraDocObject.Add(chart);

Colors.AliceBlueここで、バー Aとバー B になりたいとしましょうColors.DarkGray。どうすればそれを達成できますか?公式API経由で可能ですか?または、MigraDoc をハックする必要がありますか?

4

2 に答える 2

0

これを行うために私が考えることができる唯一の方法は、異なる色を付けたいバーごとに異なるシリーズを用意することです. 値を少しハックして、すべてのバーをほとんどオーバーレイする必要があります。

Series seriesA = chart.SeriesCollection.AddSeries();
seriesA.Add(new double[] { 10, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
seriesA.FillFormat.Color = Colors.AliceBlue;

Series seriesB = chart.SeriesCollection.AddSeries();
seriesB.Add(new double[] { 0, 20, 0, 0, 0, 0, 0, 0, 0, 0 });
seriesB.FillFormat.Color = Colors.DarkGray;

Series seriesC = chart.SeriesCollection.AddSeries();
seriesC.Add(new double[] { 0, 0, 30, 0, 0, 0, 0, 0, 0, 0 });
seriesC.FillFormat.Color = Colors.Red;

新しい各シリーズが同じチャート オブジェクトを参照していることを確認してください。そして、それを助けることができる場合は、 series.HasDataLabel = false にして、シリーズ値が互いに重ならないようにしてください。

チャートのサイズと複雑さにもよりますが、これは簡単にコピーして貼り付けることができます。

于 2013-10-03T21:35:28.750 に答える