我看不出有什么办法做到这一点,真的。其原因可能是,开发商决定目前根本不能横向标签足够的空间,一旦你开始把它们放在一个或多个额外行..
这里是一个解决方法:让那些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
,这两者都是在100%
,和往常一样,默认为“auto
”左。
对于更多行,您需要将支票更改为cl.RowIndex < 0
并找到DrawString
的x位置值。
来源
2017-03-03 08:55:00
TaW
感谢您的回复。我认为这是最后的紧急情况。我认为这对我的任务来说更简单,只需将所有标签自定义并在rowindex = 0中。 – Prain
事实上,如果这是一个选择,我想我更喜欢这个。 – TaW