【问题标题】:How to (if possible) set the orientation of a CustomLabel in the Microsoft Chart Control?如何(如果可能)在 Microsoft 图表控件中设置 CustomLabel 的方向?
【发布时间】:2026-01-03 15:35:01
【问题描述】:

如何(如果可能)在 Microsoft 图表控件中设置 CustomLabel 的方向?默认情况下,标签垂直于图表区域,我想将 Y 轴标签旋转 90 度。这是我的第一个问题,所以我没有足够的声望点来发布屏幕截图。

CustomLabel 类型似乎没有任何角度/方向属性,根据我的测试,轴的 LabelStyle 属性似乎不适用。

这是我用来显示标签的代码:

private void Init()
{
    chart1.Customize += (sender, e) =>
    {
        var chartArea = chart1.ChartAreas.First();
        CustomizeAxis(chartArea.AxisX, 10, x => DateTime.FromOADate(x).ToString());
        CustomizeAxis(chartArea.AxisY, 5, x => Math.Round(x, 2).ToString(), 90);         
    };

   //...
}

private void CustomizeAxis(Axis axis, int numOfIntervals, Func<double, string> convertValue, int angle = 0)
{
    var pos = axis.Minimum;
    var intervalSize = (axis.Maximum - pos) / (double)numOfIntervals;
    var intervalOffset = (intervalSize * 0.5);
    var labels = axis.CustomLabels;

    labels.Clear();
    for (int i = 0; i <= numOfIntervals; i++)
    {
        var label = new CustomLabel(pos - intervalOffset, pos + intervalOffset, convertValue(pos), 1, LabelMarkStyle.None);
        label.GridTicks = (i == numOfIntervals ? GridTickTypes.None : GridTickTypes.All);
        labels.Add(label);
        pos += intervalSize;
    }

    axis.LabelStyle.Angle = angle; //Has no effect
}

【问题讨论】:

    标签: c# .net-4.0 data-visualization


    【解决方案1】:

    经过更多研究(我忽略了现在显而易见的搜索关键字“角度”),我找到了解决问题的方法。事实证明,LabelStyle 设置仅适用于第一个 labelrow 上的 CustomLabels,更多详细信息请参见以下链接:CustomLabels Angle

    我把代码改成:

    var label = new CustomLabel(pos - intervalOffset, pos + intervalOffset, convertValue(pos), labelRow: 0, markStyle: LabelMarkStyle.None);
    

    【讨论】: