如何删除Chart中的白色区域?

如何在图表中删除白色区域(1,2)并减小轴(3)的宽度(C#,Visual Studio 2013)。 图表宽度约为16000像素。 PS:如果图表宽度较短(1000-2000像素),则没有白色区域,轴的宽度正常。 在此处输入图像描述

大的白色空间是按比例放大的距离。

放大Chart宽度时,可以将位置设置为较小的值。

请注意,您可以定位的元素的相关属性是ElementPosition类型,并且…

  • ..its值不是以像素为单位,而是以各个容器的百分比表示。
  • ..初始值都设置为0 ,表示Automatic

因此,每次调整图表大小时都需要计算位置,并且最初不能设置单个属性,因为其他属性仍为0

这些元素可以定位:

  • Chartarea(s)
  • (每个) Chartarea
  • Legend(s)
  • 其他一些,如Annotations ,我们在这里不需要

您还可以将Major – 和MinorTickMarks的大小从Auto设置为合适的数值。 下面是一个适用于Chart.Width16,000像素的示例:

 ChartArea ca = chart1.ChartAreas[0]; Legend L = chart1.Legends[0]; ca.Position = new ElementPosition(0.2f, 5, 99, 90); ca.InnerPlotPosition = new ElementPosition(0.3f, 1, 99.5f, 90); L.Position = new ElementPosition(99.03f, 5, 0.75f, 22); ca.AxisY.MajorTickMark.Size = 0.15f; ChartArea ca = chart1.ChartAreas[0]; ca.Position.X = 0.1f; ca.InnerPlotPosition.X = 0.3f; Axis ay = ca.AxisY; ay.MajorTickMark.Size = 0.1f; 

在此处输入图像描述

另请注意,我看不出任何方法来定位YAxis标签; 所以它通常会偏向左边。 但是,您可以在Paint事件中对其进行DrawString

 private void chart1_Paint(object sender, PaintEventArgs e) { Axis ay = chart1.ChartAreas[0].AxisY; Graphics g = e.Graphics; g.TranslateTransform(-20, 180); g.RotateTransform(270); using (SolidBrush brush = new SolidBrush(ay.TitleForeColor)) g.DrawString(ay.Title, ay.TitleFont, brush, 22, 22); } 

我在这里也使用了一些合适的值,但你会想要为其他尺寸制作出新的值!


但是:我不确定你是否应该这样放大图表。 相反,我相信您应该允许用户放大滚动 缩放图表!