使用VisualStudio WindowsForms表单。在设计器中创建图表控件。
我尝试在图表上添加一些customLabel轴 WITH 默认标签。 为此,我使用 RowIndex property = 1添加customLabels。因此,我看到默认标签和我的customLabels。 现在的问题是,当默认标签旋转正确时,我的自定义标签不是。
Axis属性LabelStyle.Angle仅影响RowIndex = 0中的标签,即默认标签。 如果我将customLabels放在RowIndex = 0 - 所有默认标签都将消失。
我所看到的:
我想看到的内容:
答案 0 :(得分:0)
我认为没办法,真的。原因可能是开发人员认为,一旦你开始将它们放在一个或多个额外的行中,就没有足够的空间用于水平标签。
以下是解决方法:在{{1}中按照您的意愿,将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%
,并且像往常一样默认为&# 39; auto
'
对于更多行,您需要将检查更改为cl.RowIndex < 0
,并为DrawString
找到一个不错的x位置值。