2016-09-20 11 views
0

グラフ(C#、Visual Studio 2013)で白い領域(1,2)を削除し、軸の幅を減らすにはどうしたらいいですか?グラフの幅は約16000ピクセルです。 PS:チャートの幅が短く(1000〜2000ピクセル)、白い領域がなく、軸の幅が正常です。 チャートの白い部分を削除するには?

+0

グラフのスタイルにはどのようなコードを使用しますか? ChartAreaを配置していますか?また:[ここをクリックしてください](http://stackoverflow.com/questions/32925981/remove-white-and-unnecessary-space-from-chart-control/32926520?s=1|2.1348#32926520) – TaW

+0

私はcaを使用します。Position = new ElementPosition(0,10,90,90)、(1)の白い領域を減らします。しかし、チャートエリアと伝説の間の(2)とホワイトエリアは大きくて非常に大きいです... http://share.pho.to/AKnNt/fb/original(オリジナルの幅10500ピクセル) –

答えて

0

大きな白いスペースは、比例して拡大された距離です。

Chartの幅を拡大すると、位置をより小さな値に設定できます。あなたができる要素の関連性は、位置タイプElementPositionであり、そのこと

注..

  • ..its値はピクセルではなく、それぞれの容器のパーセンテージではありません。
  • ..初期値はすべて0、すなわちAutomaticを意味する。

したがって、チャートのサイズを変更するたびに位置を計算する必要があります。他のパネルはまだ0にあるため、最初にプロパティを設定することはできません。

これらの要素を配置することができます。

  • Chartarea(s)
  • (それぞれ)のInnerPlotPositionChartarea
  • Legend(s)
  • いくつかの他は、Annotationsのように、我々はここでは必要ありません

また、 eサイズはMajor-およびMinorTickMarksからAutoまでの数値を適切な数値に変換します。ここChart.Width16,000の画素についてここで働い例です。

ChartArea ca = chart1.ChartAreas[0]; 
Legend L = chart1.Legends[0]; 

ca.Position = new ElementPosition(0.2f, 5, 99, 90); 
ca.InnerPlotPosition = new ElementPosition(0.3f, 1, 99.5f, 90); 
L.Position = new ElementPosition(99.03f, 5, 0.75f, 22); 

ca.AxisY.MajorTickMark.Size = 0.15f; 

ChartArea ca = chart1.ChartAreas[0]; 
ca.Position.X = 0.1f; 
ca.InnerPlotPosition.X = 0.3f; 

Axis ay = ca.AxisY; 
ay.MajorTickMark.Size = 0.1f; 

enter image description here

はまた、私はYAxisラベルを配置する方法を見ることができないことに注意してください。通常は左に移動します。あなたはしかし、PaintイベントでそれをDrawStringことができます。

private void chart1_Paint(object sender, PaintEventArgs e) 
{ 
    Axis ay = chart1.ChartAreas[0].AxisY; 
    Graphics g = e.Graphics; 
    g.TranslateTransform(-20, 180); 
    g.RotateTransform(270); 
    using (SolidBrush brush = new SolidBrush(ay.TitleForeColor)) 
     g.DrawString(ay.Title, ay.TitleFont, brush, 22, 22); 
} 

は、私がここにもいくつかの適切な値を使用していますが、他のサイズのために新しいものをうまくしたいと思うでしょう!


しかし:私はあなたがチャートをこのように拡大する必要があるかどうかはわかりません。代わりに私はあなたがズームスクロールのズームを受けたことをユーザーに許可する必要があると信じていますのグラフ!

+0

位置とInnerPlotPositionを使って私はグラフィックを失います。 MajorTickMark.Size(3)で私を助けてください。 –

+0

これは、私の更新された答えを参照してください! – TaW

関連する問題