1

我在 Windows 应用程序中使用 MS 图表控件。

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

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

问题是,当添加 10 多个以饼图为主的系列时,图表的大小会被调整得如此之小,以至于它们变得毫无用处。我的想法是动态增加图表控件的大小(从而增加其中所有图表区域的大小)。我的问题是,除非我明确设置,否则 InnerPlotPosition 的宽度和高度始终为零。

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

4

1 回答 1

1

我发现 InnerPlotPosition 至少在 PostPaint 事件回调中设置。您可能会在计算地块面积之前检查该属性。

这有效:

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
}
于 2013-06-10T00:47:56.913 回答