代码之家  ›  专栏  ›  技术社区  ›  sebrockm

当由于滚动而出现长标签时,图表将重新缩放轴标签的区域

  •  0
  • sebrockm  · 技术社区  · 6 年前

    我创造了一个 Chart ChartArea Series 使用的是 SeriesChartType.Bar Bar

    Zoom 我的方法 Paint 事件处理程序如下:

    private void chart1_Paint(object sender, PaintEventArgs e)
    {
        var scaleView = chart1.ChartAreas.First().AxisX.ScaleView;
        var pos = double.IsNaN(scaleView.Position) ? 0.0 : scaleView.Position;
        scaleView.Zoom(pos, pos + chart1.Height / 22.0);
    }
    

    我不知道这样做是否合适,但它(几乎)满足了我的要求:

    • 调整窗口大小时正确更新可见区域

    只有一件恼人的事:如果由于滚动一个长标签出现在可见区域或消失,由标签占据的区域被调整为最长的可见标签。我希望这些截图能解释我的意思:

    with long label visible

    在这里,我向上滚动了一个单位,这样长标签就不再可见了: without long label

    如何固定标签占用的区域以始终适合系列中最长的标签,而不管它当前是否可见?我试过了 IsLabelAutoFit = false 对于x轴和y轴,但这都没有帮助。

    1 回复  |  直到 6 年前
        1
  •  0
  •   sebrockm    6 年前

    好的,我知道了。我曾经

    chartArea.InnerPlotPosition.Auto = false;
    InnerPlotPosition.X = 33.333;
    

    将图表区域的三分之一放在标签上,另外三分之二放在条形图上。 InnerPlotPosition.Auto = false 使其固定,以便滚动时不会更新。