删除Chart控件指定图表区域后如何调整剩余区域自动填充空余空间
解决方法
方案1:启用自动布局(最简单)
删除图表区域后,直接遍历剩余所有ChartArea,将其位置属性设为自动适配即可:
// 原有删除选中区域的逻辑 chart1.ChartAreas.Remove(chart1.ChartAreas[select]); // 新增自动适配逻辑 foreach (ChartArea area in chart1.ChartAreas) { area.Position.Auto = true; area.InnerPlotPosition.Auto = true; } // 触发控件重绘 chart1.Invalidate();
默认情况下Chart控件会自动平分可用空间给所有开启自动布局的图表区域,不需要手动计算尺寸。
方案2:手动分配比例(适合需要自定义占比的场景)
如果你需要自定义剩余区域的高度/宽度占比,可以手动计算后赋值:
chart1.ChartAreas.Remove(chart1.ChartAreas[select]); int areaCount = chart1.ChartAreas.Count; // 以垂直排列平分高度为例 float heightPerArea = 100f / areaCount; for (int i = 0; i < areaCount; i++) { var area = chart1.ChartAreas[i]; area.Position = new ElementPosition(0, i * heightPerArea, 100, heightPerArea); // 可按需调整内边距参数 area.InnerPlotPosition = new ElementPosition(10, 5, 85, 90); } chart1.Invalidate();
如果是水平排列的布局,把上面的高度计算逻辑改成宽度计算即可。
注意:如果之前你手动给ChartArea设置过固定的Position数值,必须先把Auto设为true或者重新计算赋值,否则删除区域后会留下空白。
内容的提问来源于stack exchange,提问作者nickolas
相关产品推荐
相关产品推荐

