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

Charts 如何获取Microsoft图表控件中绘图区域的大小,charts,mschart,microsoft-chart-controls,dundas,Charts,Mschart,Microsoft Chart Controls,Dundas,我正在Windows应用程序中使用MS图表控件 我正在动态绘制各种系列的图表,用户可以指定每个系列应该是哪种图表类型。这会导致饼图与直线/样条曲线图等相结合的情况 当至少有一个系列被指定为饼图时,我会动态添加图表区域和图例,为每个系列提供自己的图表区域,同时将所有“基本”图表类型(直线(区域)/样条曲线(区域)/等)组合到单个图表区域中 问题是,当添加10+系列时,大多数是饼图,这些图表的大小调整得太小,它们变得毫无用处。我的想法是动态增加图表控件的大小(从而增加其中所有图表区域的大小)。我的问

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

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

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

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


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

我发现至少在后期事件回调中设置了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
}

我发现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
}

这正是我所要求的,尽管在渲染过程中很难在此时调整控件的大小并使其正确重画。不幸的是,尚未确定InnerPlotPosition的Customize事件(据我所知,在该事件中会发生调整大小之类的事情)。无论如何,你回答了我的问题。谢谢。这正是我所要求的,尽管在渲染过程中很难在此时调整控件的大小并使其正确重画。不幸的是,尚未确定InnerPlotPosition的Customize事件(据我所知,在该事件中会发生调整大小之类的事情)。无论如何,你回答了我的问题。谢谢