2016-12-21 8 views
0

をテキストに重なるように自分自身を再配置し、私のコードです:チャートはここで奇妙な方法で

public Form1() 
{ 
    InitializeComponent(); 
    // Data arrays. 
    string[] seriesArray = { "Cats", "Dogs" }; 
    int[] pointsArray = { 1, 2 }; 

    // Set palette. 
    this.chart1.Palette = ChartColorPalette.SeaGreen; 

    // Set title. 
    this.chart1.Titles.Add("Pets"); 

    // Add series. 
    for (int i = 0; i < seriesArray.Length; i++) 
    { 
     // Add series. 
     Series series = this.chart1.Series.Add(seriesArray[i]); 

     // Add point. 
     series.Points.Add(pointsArray[i]); 
    } 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    chart1.Titles[0].Position.Y = chart1.Titles[0].Position.Y + 1; 
} 

私はタイトルPetsの場所は、チャートは異なる方法で自分自身を再描画ということです変更したときに、私が直面する問題があります。なぜこのようなことが起こるのか理解したいと思います。これを回避する方法があります。これは、テキストがチャートの上に表示されるため、first時に発生します。ここで

は、私が何を意味するかです:

1を追加するどのよう

enter image description here

チャートでは、このような大きな違いを生みますか?

+0

問題を解決しましたか? – TaW

答えて

0

「Position.Y」との問題は、それが「自動」の位置から始まるということですので、あなたはそれに1を加え、初めて、コンパイラアサインDockingOffsetの代わりPosition.Y

private void button1_Click(object sender, EventArgs e) 
{ 
    chart1.Titles[0].DockingOffset = chart1.Titles[0].DockingOffset + 1; 
} 

で試してみてください値を再描画して1を加算します。

+0

もう説明できますか? –

+0

割り当てられていない場合、チャートのすべての要素には、チャートを最もよく満たす「自動」ポジション値があります。 ポジション値を 'chart's tittle'に割り当てると、ティルトポジションが 'auto'から新しい値に変更されます(自分の追加したポジション+ 1)、チャートのすべてのエレメントが 'Auto'それが「オート」ではないために、それを考慮して、セルを並べ替えます。次に、チャートが再描画され、新しい位置のすべての要素が表示されます。 DockingOffsetは、最初の 'auto'位置を参照として使用するため、オフセットを正しく追加します。 – ViXoZuDo

0

1を追加するとグラフに大きな違いがありますか?

まず多くまたはほとんどChartElements割合によって位置決めされているためだという。

一部はpixelsの他、ダブルスで与えられ、Valuesであるが、ほとんどは割合、それぞれのコンテナのです。

あるいはは、最初にautoに設定し、必要に応じて再計算します。

だからあなた ChartAreaは80%の高さとを持っている場合 ChartClientsizeが500pixelsある ChartAreaの高さが400個のピクセルに計算します。

Title.Position.Heightがあなたのチャートで計算された割合はわかりませんが、それが4%と言えば1を加算すると5%になり、20pxからy = 25pxに下がります。

しかし、あなたが観察する違いはそれ以上です!実際には、はるかに大きな違いはChartAreaHeight & Topです!何故ですか?

第二、あなたはとき自動計算利用できるスペースを検討する要素のうち、それを撮影し、その計算からTitle「ゴーン」と、突然、より多く存在しているChart's Title's PositionをいじりすることによりChartAreaの縦スペース。したがって、成長し、Titleと重複することさえあります。

どうすればそれを防ぐことができますか?さて、あなたは計算からの変化を防ぐために、次のように自動でアウトすることができます:

RectangleF r = chart1.ChartAreas[0].Position.ToRectangleF(); 
chart1.ChartAreas[0].Position = new ElementPosition(r.X, r.Y, r.Width, r.Height); 

他の要素も同様に影響を受ける可能性があります。したがって、Legendは、上にある解放されたスペースを使用して上に移動します(スクリーンショットで見ることができます)。スペースが自動的に計算されなくなるため、いくつかの要素を考慮する必要があります。あなたはdouble.NaNに値を設定する必要がAutoChartElement.Positionを復元するために、ところで成長し、より多くのスペースを必要とし、軸ラベルやLegendのような...

関連する問題