2017-06-27 5 views
0

私はいくつかのデータ列を持つVisualStudio WinFormsでグラフを作成しています。その一部のラベルを配置したいと思います。主な問題は、最初と最後の列のラベルが表示されないことです。チャートの最小値と最大値は固定されており、データポイントは最小値と最大値に設定できます。MSChart DataPointラベルオーバーラップ

は、例えば私は一連のチャートを作った[0] .ChartType =「列」また、X、Y、インデックスとテキスト文字列を表示するシリーズ[0] .LABELプロパティを設定することによって、ラベルを割り当てシリーズ[0] .LabelBackColorシリーズ[0] .LabelBorderColorをボックスにする。私が得たものである

Column type
テキストが背景ボックスの外側で、ラベルは国境はなく(左側)AxisYがまだ表示されているが、重複しています。 x = 0およびx = 10のラベルはまったく表示されません。また、Column型では、以下に書かれたすべての操作は効果がありませんでした。

実は私は、StackedColumnタイプが必要になります。そして、私は[0] .ChartType = "StackedColumn"シリーズにタイプを変更し、この得た:
StackedColumn
ボックスが大きくなっているが、まだAxisYラインと重複し、最初のラベルと最後のラベルはまだありません。

Iは
シリーズ[0] .SmartLabelStyle.IsOverlappingHidden = falseを設定しようと、この得た: が
StackedColumn with no hidden overlapping
AxisXとAxisY線とマーカーは、ラベル上に示されています。それはまずいです。 シリーズは、[0] =偽を.SmartLabelStyle.Enabledし、この得た:
StackedColumn with SmartLabelStyle turned off
あまり良くする

は、その後、私は設定することにより、 SmartLabelStyle全くを無効にしてみました。ラベルも重なっています。最後に

私は[0] .SmartLabelStyle.MovingDirection = SmartLabelStyleを有効にしてシリーズを設定することにより、移動するラベルを強制しようとした "右|左"と、この得た:
StackedColumn with MovingDirection
今すぐにテキストをラベルは適切に移動されますが、背景ボックスは移動しません。そのボックスが適切に動いていればそれで十分でしょうが、そうではありませんでした。 データポイントラベルをチャートの左右に正しく表示させる方法がありません。
テキストとボックスのラベル位置を設定する方法はありますか?ラベルボックスをテキストの適切なサイズに設定するには?
私は間違いなくchart.Paintメソッドを避けたいと思います。

答えて

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

関連する問題