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);
}
}
}
请根据自己的喜好使用 Font
和 Brush
。这是结果:
请注意,您可能需要通过调整 ChartArea.Position
或 ChartArea.InnerPlotPosition
在左侧创建更多 space,它们都在 100%
中,并且,通常,默认为'auto
'。
对于更多行,您需要将检查更改为 cl.RowIndex < 0
并为 DrawString
.
找到一个合适的 x 位置值
使用 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);
}
}
}
请根据自己的喜好使用 Font
和 Brush
。这是结果:
请注意,您可能需要通过调整 ChartArea.Position
或 ChartArea.InnerPlotPosition
在左侧创建更多 space,它们都在 100%
中,并且,通常,默认为'auto
'。
对于更多行,您需要将检查更改为 cl.RowIndex < 0
并为 DrawString
.