ZedGraphで複数のグラフを扱うには、ZedGraphControlクラスのMasterPaneプロパティを使用します。ところでZedGraphControlクラスのグラフ表示部へはGraphPaneプロパティからアクセスできますが、これはMasterPaneの最初のオブジェクトへの参照であり、次の3つのコードは同一のオブジェクトを参照します。
this.zedGraphControl.GraphPane;
this.zedGraphControl.MasterPane[ 0 ];
this.zedGraphControl.MasterPane.PaneList[ 0 ];
ZedGraphControlのGraphPaneのリスト (MasterPane) に新しいGraphPaneを追加します。それにはMasterPaneクラスのAdd()メソッドを使用します。
public void Add( GraphPane pane )
なおZedGraphControlオブジェクトを作成した時点で、1つのGraphPaneオブジェクトが作成されています。もしすべてのグラフを自身で作成したいならば、最初にGraphPaneのリストを消去します。
this.zedGraphControl.MasterPane.PaneList.Clear();
// ZedGraphControlから MasterPaneを取得する MasterPane masterPane = this.zedGraphControl.MasterPane; // 新規にGraphPaneを作成する GraphPane graphPane = new GraphPane(); // それをMasterPaneに追加する masterPane.Add( graphPane );
実行結果
GraphPaneを追加しただけでは全体のレイアウトの計算が行われないため、上記のようには表示されません。そのときにはフォームのサイズを変更すると修正されます。もしくは後述のように明示的にレイアウトを調整します。
public void SetLayout( Graphics g, // グラフィックデバイス オブジェクト PaneLayout paneLayout // 配置方法を記述した PaneLayout )
列挙子 | 説明 | 配置イメージ |
---|---|---|
ForceSquare | 正方形のグリッドに配置する。 | |
SquareColPreferred | 基本的に正方形に配置するが、余剰分は列を追加して配置する。 | |
SquareRowPreferred | 基本的に正方形に配置するが、余剰分は行を追加して配置する。 | |
SingleRow | 1行に配置する。 | |
SingleColumn | 1列に配置する。 | |
ExplicitCol23 | 1行目に2つ、2行目に3つ配置する。(5つのグラフ専用) | |
ExplicitCol32 | 1行目に3つ、2行目に2つ配置する。(5つのグラフ専用) | |
ExplicitRow23 | 1列目に2つ、2列目に3つ配置する。(5つのグラフ専用) | |
ExplicitRow32 | 1列目に3つ、2列目に2つ配置する。(5つのグラフ専用) |
SetLayout()メソッドの第1引数で必要なGraphicsオブジェクトは、ControlのCreateGraphicsなどで取得できます。Control.CreateGraphics メソッド (System.Windows.Forms) | MSDN
using( Graphics graphics = this.CreateGraphics() ) { this.zedGraphControl.MasterPane.SetLayout( graphics, PaneLayout.ForceSquare ); }
public void SetLayout( Graphics g, // グラフィックデバイス オブジェクト bool isColumnSpecified, // int[] countList, // float[] proportion // )