2017-06-27 121 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