2017-06-27 3 views
0

Ich mache ein Diagramm in VisualStudio WinForms mit einigen Datenspalten und ich möchte Etiketten für einige von ihnen platzieren. Hauptproblem ist, dass die Beschriftungen für die erste und die letzte Spalte nicht angezeigt werden. Min und Max für Diagramm ist fest und Datenpunkte können auf Min und Max sein.MSChart DataPoint Label überlappend

Zum Beispiel habe ich ein Diagramm mit Serie [0] .ChartType = „Spalte“ und Etikett zugewiesen Serie Einstellung [0] .LABEL Eigenschaft X, Y, Index und einige Textzeichenfolge zu zeigen, auch Set Serie [0] .LabelBackColor und Serie [0] .LabelBorderColor, um eine Box zu machen.
Das ist, was ich habe:
Column type
Text außerhalb der Hintergrund-Box werden überlappende Beschriftungen Grenzen aber AxisY (links) ist noch sichtbar; und Beschriftungen für x = 0 und x = 10 werden überhaupt nicht angezeigt! Auch bei dem Spaltentyp hatten alle unten beschriebenen Vorgänge keine Wirkung.

Eigentlich brauche ich StackedColumn Typ, so: dann änderte ich Typ Serie [0] .ChartType = "StackedColumn" und bekam dies:
StackedColumn
Boxen größer sind, aber immer noch überlappend mit AxisY Linie und Zahlen oben, und immer noch keine ersten und letzten Etiketten.

Ich versuchte Serie [0] .SmartLabelStyle.IsOverlappingHidden = false und bekam dies zu setzen:
StackedColumn with no hidden overlapping
AxisX und AxisY Linien und Markierungen sind oben Etiketten gezeigt. Das ist nicht gut.

Dann habe ich versucht, indem SmartLabelStyle überhaupt zu deaktivieren: Serie [0] .SmartLabelStyle.Enabled = false und bekam dies:
StackedColumn with SmartLabelStyle turned off
nicht viel besser. Sogar Etiketten überlappen sich jetzt.

Endlich habe ich versucht, Labels zu zwingen, indem es SmartLabelStyle und Einstellung Serie [0] = .SmartLabelStyle.MovingDirection zu bewegen "Right | Left" und bekam dies:
StackedColumn with MovingDirection
Jetzt in Text Labels wird richtig verschoben, aber Hintergrundbox ist nicht. Wenn diese Box auch richtig bewegt wurde, würde das reichen, aber das tat es nicht. Ich habe keine Ideen, wie DataPoint Labels auf der linken und rechten Seite des Diagramms richtig angezeigt werden.
Gibt es eine Möglichkeit, Etikettenposition für Text und Box zu setzen? Wie setze ich das Label-Feld auf die richtige Größe für Text?
Ich möchte auf jeden Fall chart.Paint-Methoden vermeiden.

Antwort

0

Möchten Sie Annotationen dynamisch hinzufügen? Dies kann vor jedem Diagramm erfolgen.Malen Sie Methoden aufgerufen:

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