3

我正在以编程方式创建一个图表 (DataVisualization.Charting.Chart),它是一个堆积条形图。

我还以编程方式向其中添加图例条目。我想在图表底部显示图例。

但是,这样做时,图例与图表的 X 轴重叠。

这是我正在使用的代码:

Private Function GetLegend(ByVal legendName As String, ByVal s As Single) As     System.Windows.Forms.DataVisualization.Charting.Legend

 Dim objLegend As System.Windows.Forms.DataVisualization.Charting.Legend = New System.Windows.Forms.DataVisualization.Charting.Legend()

 objLegend.Name = legendName
 objLegend.Font = New System.Drawing.Font("Verdana", s)
 objLegend.IsDockedInsideChartArea = False
 objLegend.Docking = Docking.Bottom
 Return objLegend
End Function

下面的语句将该图例添加到图表中

_msChart.Legends.Add(GetLegend("SomeValue1", 10.0F))

任何想法,缺少什么?我只想在底部显示图例,但不应与 X 轴重叠。

4

2 回答 2

2

我今天遇到了同样的问题。尝试添加:

objLegend.Position.Auto = true
objLegend.DockedToChartArea = "yourChartAreaName"

这对我没有帮助,但我在网上发现这可能会有所帮助(并且是干净的解决方案)。

实际上对我有用的是移动图表区域为图例腾出空间,使其不再重叠。我的传说是最重要的,所以这段代码对我有用:

chart.ChartAreas[0].Position.Y = 15

您可以尝试调整它的大小,例如强制它比chart.Size.

希望这可以帮助。

于 2011-01-11T13:53:56.820 回答
0

我也有一个重叠的图例/图表区域问题,但这里的其他建议似乎都没有任何区别。我认为问题源于图例文本换行到两行,而大小调整算法没有考虑到这一点。

这里的想法让我更清楚地思考这个问题,我能够使用以下方法控制图表区域的大小和位置。

Chart1.ChartAreas[0].InnerPlotPosition = new ElementPosition(15, 5, 90, 75);

这些参数没有太多智能感知,但据我所知,这些参数都是图表总面积的百分比(我最初认为它们可能是像素值并且得到了一些非常奇怪的结果)。因此,我在上面写的内容会将绘图区域设置为从图表图像的左边缘开始 15%,从顶部向下 5%,宽度为 90%,高度为 75%。

于 2012-11-30T16:37:54.300 回答