RowIndex > 0 处的 MSChart 轴 CustomLabel 角度

MSChart axis CustomLabel angle at RowIndex > 0

使用 VisualStudio WindowsForms 窗体。在设计器中创建图表控件。

我正在尝试在图表轴上添加一些自定义标签 WITH 默认标签。 为此,我添加了带有 RowIndex 属性 =1 的 customLabels。因此我看到了默认标签和我的自定义标签。 现在的问题是,虽然默认标签已正确旋转,但我的自定义标签却没有。

轴 属性 LabelStyle.Angle 仅影响 RowIndex = 0 中的标签,即默认标签。 如果我将 customLabels 放在 RowIndex=0 - 所有默认标签都将消失。

我看到的:

我想看的:

我看不出有什么办法,真的。原因可能是开发人员决定根本没有足够的 space 用于水平标签,一旦您开始将它们放在一个或多个额外的行中..

这是一个解决方法:让那些CustomLabels全部透明绘制xxxPaint 活动中随心所欲。

这是一个例子:

我准备了 CustomLabels :

CustomLabel cl = new CustomLabel();
cl.ForeColor = Color.Transparent;
cl.RowIndex = 1;
...

然后我像这样对绘图进行编码:

private void chart1_PostPaint(object sender, ChartPaintEventArgs e)
{
    Axis ay = chart1.ChartAreas[0].AxisY;
    foreach (var cl in ay.CustomLabels)
    {
        if (cl.RowIndex == 1)
        {
            double vy = (cl.ToPosition + cl.FromPosition) / 2d;
            int y = (int)ay.ValueToPixelPosition(vy);
            e.ChartGraphics.Graphics.DrawString(cl.Text, 
                         cl.Axis.TitleFont, Brushes.DarkRed, 0, y);
        }
    }
}

请根据自己的喜好使用 FontBrush。这是结果:

请注意,您可能需要通过调整 ChartArea.PositionChartArea.InnerPlotPosition 在左侧创建更多 space,它们都在 100% 中,并且,通常,默认为'auto'。

对于更多行,您需要将检查更改为 cl.RowIndex < 0 并为 DrawString.

找到一个合适的 x 位置值