2 を含むチャート コントロールがある場合chartAreas
、チャート コントロールはデフォルトで chartAreas を互いの上に配置し、各領域がチャート コントロールの使用可能なサイズの 50% を占めるようにします。
chartAreas のパーセントを変更して、上部のグラフが領域の 75% を占め、下部のグラフが 25% を占めるようにする方法はありますか?
それで、最終的にそれを見つけましたが、十分に文書化されているとは思いません。それぞれにChartArea.PositionchartArea
プロパティがあります。タイプElementPositionのこのプロパティには、この問題に関連する 4 つのプロパティが含まれています。
Height: グラフ要素の高さを取得または設定します。
幅: グラフ要素の幅を取得または設定します。
X: 該当するグラフ要素の左上隅の相対 X 座標を取得または設定します。
Y: 該当するグラフ要素の左上隅の相対 Y 座標を取得または設定します。
さらに掘り下げると、Height
およびWidth
プロパティも相対座標で記述されており、0 ~ 100 しか入力できません。
基本的に、各高さを変更する必要があり、各 Y を移動してそれらをシフトする必要があります。最初の作成後、他の数値は自動的に調整されません。
たとえば、Height
chartArea[1] をもっと小さいものに変更しただけでも、以前の場所に固定されたままになり、その下に多くの空白が残ります。
その後Height
、chartArea[0] を増やすと、サイズ変更したばかりの chartArea[1] の上に描画される可能性があります。そのためY
、chartArea[1] を下に移動するように設定する必要があります。これにより、上に描画されず、空白がなくなります。
したがって、質問で尋ねたものと同様のものを得るために、次のように設定しました。
chart1.ChartAreas[0].Position.Y = 10;
chart1.ChartAreas[0].Position.Height = 60;
chart1.ChartAreas[1].Position.Y = 70;
chart1.ChartAreas[1].Position.Height = 20;
この説明をもう少し明確にするために、これらの chartArea が含まれている Chart コントロールを「親」と呼びます。
これらはパーセンテージですが、この例では、親のサイズが 100 ピクセルであると仮定します。
これにより、最初の chartArea の表示開始位置が 10 ピクセルに設定され、高さが約 60 ピクセルになります。次に、2 番目の chartArea を 70px で表示し始め、高さを約 20px にします。
このグラフの高さが 200px の場合、比率は同じになりますが、実際のピクセルは 2 倍になります (したがって、最初のグラフ領域を 60 に設定すると、高さが 120px になります)。
実際のプログラムでは、タイトルが軸ラベルを上書きしているため、これをもう少しパディングしましたが、これらの数字はそれをよりよく説明するのに役立つと感じました.
2 番目のチャートの .Y 位置を最初のチャートの下部に設定することもできます。そうすれば、最初のチャートがどこにあるかだけを気にする必要があります。コードは次のようになります。
chart1.ChartAreas[0].Position.Y = 10;
chart1.ChartAreas[0].Position.Height = 60;
chart1.ChartAreas[1].Position.Y = chart1.ChartAreas[0].Position.Bottom;
chart1.ChartAreas[1].Position.Height = 20;
もちろん、チャート間に必要な空白の量に応じて、.Y 位置をパディングすることもできます。複数のチャートを使用して作成したアプリケーションにこのアプローチを使用しました。これにより、個々のチャートで何が行われたかに関係なく、各チャートが適切に配置されることが保証されます。