3

積み上げ棒グラフであるグラフ(DataVisualization.Charting.Chart)をプログラムで作成しています。

また、プログラムでLegendエントリを追加しています。チャートの下部に凡例を表示したいと思います。

ただし、そうしている間、凡例はグラフのX軸と重なります。

これが私が使用しているコードです:

Private Function GetLegend(ByVal legendName As String, ByVal s As Single) As     System.Windows.Forms.DataVisualization.Charting.Legend

 Dim objLegend As System.Windows.Forms.DataVisualization.Charting.Legend = New System.Windows.Forms.DataVisualization.Charting.Legend()

 objLegend.Name = legendName
 objLegend.Font = New System.Drawing.Font("Verdana", s)
 objLegend.IsDockedInsideChartArea = False
 objLegend.Docking = Docking.Bottom
 Return objLegend
End Function

以下のステートメントは、その凡例をグラフに追加します

_msChart.Legends.Add(GetLegend("SomeValue1", 10.0F))

何かアイデア、何が欠けていますか?凡例を下部にのみ表示したいのですが、X軸と重ならないようにする必要があります。

4

2 に答える 2

2

今日も同じ問題がありました。追加してみてください:

objLegend.Position.Auto = true
objLegend.DockedToChartArea = "yourChartAreaName"

それは私を助けませんでしたが、これが役立つかもしれないことをネットで見つけました(そしてきれいな解決策)。

実際に私にとってうまくいったのは、グラフ領域を移動して凡例のためのスペースを作り、重複しないようにすることでした。私の伝説が一番上にあったので、このコードは私のために働いた:

chart.ChartAreas[0].Position.Y = 15

代わりにサイズを変更してみてください。たとえば、chart.Size.

お役に立てれば。

于 2011-01-11T13:53:56.820 に答える
0

重複する凡例/グラフ領域の問題もありましたが、ここでの他の提案はどれも違いを生むようには見えませんでした. この問題は、凡例のテキストが 2 行に折り返されていることと、サイズ変更アルゴリズムがこれを考慮していないことが原因だと思います。

ただし、ここでのアイデアにより、問題についてより明確に考えることができ、以下を使用してグラフ領域のサイズと位置を制御できました。

Chart1.ChartAreas[0].InnerPlotPosition = new ElementPosition(15, 5, 90, 75);

これらのパラメーターにはインテリセンスはあまりありませんが、推測できるように、パラメーターはすべてグラフ領域全体のパーセンテージです (最初はピクセル値であると考えていたので、非常に奇妙な結果が得られました)。したがって、上で書いたものは、グラフ イメージの左端から 15%、上から 5% の位置から開始し、幅 90%、高さ 75% になるようにプロット エリアを設定します。

于 2012-11-30T16:37:54.300 に答える