2017-06-27 122 views
0

我在VisualStudio WinForms中制作了一些带有一些数据列的图表,我想为它们中的一些放置标签。主要问题是没有显示第一列和最后一列的标签。图表的最小值和最大值是固定的,数据点可以是最小值和最大值。MSChart DataPoint标签重叠

例如我做了一个图表与系列[0] = .ChartType“列”并通过设置系列[0] .Label属性来显示X,Y,索引和一些文本串,还分配的标签设置系列[0] .LabelBackColor系列[0] .LabelBorderColor制作一个盒子。
这就是我的了:
Column type
文字在背景框之外,标签是重叠的边界,但AxisY(左)仍清晰可见;并且x = 0和x = 10的标签完全不显示!此外,对于列类型,以下所有的操作都不起作用。

实际上我需要StackedColumn类型,所以:然后我改变类型系列[0] .ChartType = “StackedColumn”和得到这个:
StackedColumn
盒是大,但与AxisY线和仍然重叠顶部的数字,仍然没有第一个和最后一个标签。

我试图设置系列[0] = .SmartLabelStyle.IsOverlappingHidden假和得到这个:
StackedColumn with no hidden overlapping
AxisX和AxisY线和标记在上面示出的标签。那不行。

然后我试图在所有通过设置来禁用 SmartLabelStyle系列[0] = .SmartLabelStyle.Enabled假并得到了这一点:
StackedColumn with SmartLabelStyle turned off
也好不到哪去。即使标签现在重叠。

最后我试图强迫标签通过启用 SmartLabelStyle和设置系列[0] = .SmartLabelStyle.MovingDirection移动 “右|左”,得到了这一点:
StackedColumn with MovingDirection
现在文本标签移动正确,但背景框不正确。如果这个盒子移动得很好,那就足够了,但它没有。 我不知道如何使数据点标签正确显示在图表的左侧和右侧。
有没有一种方法来设置它的文本和框的标签位置?如何将标签框设置为适当的文本大小?
我绝对想避免图表。绘制方法。

回答

0

你愿意动态添加注释吗?这可以在任何图表之前完成。画图方法被称为:

For Each point As DataPoint In Chart1.Series(0).Points 
    Dim ann As New RectangleAnnotation 
    ann.Text = "X=" & point.XValue & vbNewLine & " Y=" & point.YValues(0) & 
     vbNewLine & "a very long text string" 
    ann.AnchorDataPoint = point 
    Chart1.Annotations.Add(ann) 
Next 

This shows the resulting chart