如何在Microsoft图表控件中获取绘图区域的大小

时间:2013-04-23 16:49:42

标签: charts mschart microsoft-chart-controls dundas

我在Windows应用程序中使用MS Chart Control。

我正在动态绘制各种系列图表,用户可以指定每个系列应该是哪种图表类型。这导致饼图与线/样条图等结合使用。

当至少有一个系列被指定为饼图时,我动态添加图表和图例,为这些系列中的每一个提供自己的图表区域,而所有“基本”图表类型(线(区域)/样条(区域)) / etc。)合并为一个图表区域。

问题在于,当添加10+系列时,大多数是饼图,图表的大小调整得很小,它们变得无用。我的想法是动态增加图表控件的大小(从而增加所有图表区域的大小)。我的问题是,除非我明确设置它们,否则InnerPlotPosition的宽度和高度始终为零。

有没有办法确定绘图区域的大小(以像素为单位)或百分比(我可以乘以图表控件大小来获取像素)等等,即使没有明确设置?这将允许我增加图表控件的大小,直到达到一些最小(并且有希望,可读)的值。

1 个答案:

答案 0 :(得分:1)

我发现至少在PostPaint事件回调中设置了InnerPlotPosition。您可能在计算绘图区之前检查该属性。

这有效:

var c = new Chart();
c.PostPaint += c_PostPaint;
// Do whatever to setup the chart
// Then in my case I'm saving the image which causes rendering
c.SaveImage(myFileName);


void c_PostPaint(object sender, ChartPaintEventArgs e)
{
    var ipp = e.Chart.ChartAreas[0].InnerPlotPosition; // Values populated here
}