TrueChart for WinForms (C1Chart2D)
複数のグラフの X 軸はどのように同期させますか?
タスク別ヘルプ > よくある質問 > 複数のグラフの X 軸はどのように同期させますか?

複数のグラフを表示するアプリケーションでは、各グラフの x 軸の目盛を同期させることができます。

Margins プロパティを使用して、複数のグラフ領域の x 軸の位置を揃えます。たとえば、下のような方法で、2つのグラフの x 軸の位置を調整します。これに変更を加えれば、3つのグラフを同期させることもできます。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Private Sub AdjustAxisPositions() 
    C1Chart1.ChartArea.Margins.Left = 10 
    C1Chart1.ChartArea.Margins.Right = 10 
    C1Chart2.ChartArea.Margins.Left = 10 
    C1Chart2.ChartArea.Margins.Right = 10 
    ' 強制的に再描画
    Dim img As Image = C1Chart1.GetImage() 
    If img IsNot Nothing Then 
        img.Dispose() 
    End If 
    img = C1Chart2.GetImage()   
    If img IsNot Nothing Then 
        img.Dispose()   
    End If     
    Dim ch1_X As Rectangle = C1Chart1.ChartArea.AxisX.GetAxisRect()  
    Dim ch2_X As Rectangle = C1Chart2.ChartArea.AxisX.GetAxisRect() 
    Dim d As Integer = ch1_X.Left - ch2_X.Left  
    If d > 0 Then 
        C1Chart2.ChartArea.Margins.Left += d 
        ElseIf d < 0 Then 
                c1Chart1.ChartArea.Margins.Left -= d 
    End If 
    d = ch1_X.Right - ch2_X.Right 
    If d > 0 Then 
        C1Chart1.ChartArea.Margins.Right += d 
        ElseIf d < 0 Then 
        C1Chart2.ChartArea.Margins.Right -= d 
    End If 
End Sub

C# コードの書き方

C#
コードのコピー
void AdjustAxisPositions() 
{    
        c1Chart1.ChartArea.Margins.Left = 10;      
        c1Chart1.ChartArea.Margins.Right = 10;    
        c1Chart2.ChartArea.Margins.Left = 10;  
        c1Chart2.ChartArea.Margins.Right = 10;     
        // 強制的に再描画    
        Image img = c1Chart1.GetImage();
        if( img!=null)
                img.Dispose();
        img = c1Chart2.GetImage();
        if( img!=null)
                img.Dispose();     
        Rectangle ch1_X = c1Chart1.ChartArea.AxisX.GetAxisRect();  
        Rectangle ch2_X = c1Chart2.ChartArea.AxisX.GetAxisRect();
        int d = ch1_X.Left - ch2_X.Left;
        if( d>0)    
                c1Chart2.ChartArea.Margins.Left += d;
        else if( d<0)    
                c1Chart1.ChartArea.Margins.Left -= d;    
                d = ch1_X.Right - ch2_X.Right;  
        if( d>0)    
                c1Chart1.ChartArea.Margins.Right += d;   
        else if( d<0)   
                c1Chart2.ChartArea.Margins.Right -= d; 
}