我在Windows应用程序中使用MS Chart Control。
我正在动态绘制各种系列图表,用户可以指定每个系列应该是哪种图表类型。这导致饼图与线/样条图等结合使用。
当至少有一个系列被指定为饼图时,我动态添加图表和图例,为这些系列中的每一个提供自己的图表区域,而所有“基本”图表类型(线(区域)/样条(区域)) / etc。)合并为一个图表区域。
问题在于,当添加10+系列时,大多数是饼图,图表的大小调整得很小,它们变得无用。我的想法是动态增加图表控件的大小(从而增加所有图表区域的大小)。我的问题是,除非我明确设置它们,否则InnerPlotPosition的宽度和高度始终为零。
有没有办法确定绘图区域的大小(以像素为单位)或百分比(我可以乘以图表控件大小来获取像素)等等,即使没有明确设置?这将允许我增加图表控件的大小,直到达到一些最小(并且有希望,可读)的值。
答案 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
}