我看到了this的答案,但是如果您有三个charts
会怎样?通常,是否有n个charts
彼此堆叠在一起,并且您希望chart
实体(areas
)彼此对齐?
我很高兴看到三个charts
的结果,但是使用function
图表并使其对齐的list
最有用。
此外,此答案是否假定图表中已经包含所有数据?如果将数据动态添加到runtime
并需要保持图表对齐怎么办?问题是y-axis labels
的大小可能会随着新数据的出现而改变(出现负号,或者更多的小数位,更多的数字等),将图表主体推向右侧,从而使它们与其他图表区域混淆堆叠在上面/下面。
无论标签多大,都能够分配稳定的Y-axis label extent
可以解决其中的一些问题。 如何完成?
答案 0 :(得分:0)
这应该可行,假设charts
是所有图表的数组-
var referenceR = charts
.OrderBy(c => c.ChartAreas[0].InnerPlotPosition.ToRectangleF().Width)
.FirstOrDefault();
foreach(var chart in charts)
{
chart.Left = referenceR.Left;
chart.Size = referenceR.Size;
var r = chart.ChartAreas[0].InnerPlotPosition.ToRectangleF();
chart.ChartAreas[0].InnerPlotPosition = new ElementPosition(referenceR.Left, r.Top, referenceR.Width, r.Height);
}
答案 1 :(得分:0)
此解决方案有效。我意识到这不是我要的,但是现在看来,这chart control
是“提升”来解决此类问题的内部设计。
我有一个charts
和三个chart
,而不是三个areas
。然后解决对齐问题很简单:
chart1.ChartAreas["ChartArea2"].AlignWithChartArea = "ChartArea1";
chart1.ChartAreas["ChartArea3"].AlignWithChartArea = "ChartArea1";
随着数据的实时插入,一切都保持良好的对齐状态。