C# MSChart - charts area limits

前端 未结 2 881
长发绾君心
长发绾君心 2021-01-15 10:22

I have one Chart and three ChartArea that are aligned in view, zoom, cursor: this is my related previous post. All things works well except that the three ChartArea are not

2条回答
  •  孤街浪徒
    2021-01-15 10:36

    You may want to take control of the size of the InnerPlotPosition.

    (But Baddack's solution is simpler and more flexible!)

    Here is an example:

    After setting up a Chart with three CharAreas, setting Minima and Maxima as well as adding one DataPoint to each we get this :

    Your issue is showing clearly.

    After setting the InnerPlotPosition to a fixed percentage it looks like this:

    Here is how to set the InnerPlotPosition size:

    ca1.InnerPlotPosition = new ElementPosition(10, 5, 80, 90);
    ca2.InnerPlotPosition = new ElementPosition(10, 5, 80, 90);
    ca3.InnerPlotPosition = new ElementPosition(10, 5, 80, 90);
    

    Note that both ChartArea.Position and ChartArea.InnerPlotPosition are called 'Position' but really are areas of percentages referring to the respective containers!

    So my example has a Left distance of 10%, a Top space of 5% and Width of 80% and Height of 90%. Which leaves 10% space at the Bottom and 5% at the Right. Note: All are referring to the ChartAreas not the ClientArea of the Chart! (Which are still at Auto, which maximizes the size.)

    This was my initial setup:

    ChartArea ca1 = chart.ChartAreas[0];
    ChartArea ca2 = chart.ChartAreas[1];
    ChartArea ca3 = chart.ChartAreas[2];
    
    
    Series s1 = chart.Series[0];
    Series s2 = chart.Series.Add("Series2");
    Series s3 = chart.Series.Add("Series3");
    
    s2.ChartArea = ca2.Name;
    s3.ChartArea = ca3.Name;
    
    s1.Points.AddXY(1, 7);
    s2.Points.AddXY(1, 777);
    s3.Points.AddXY(1, Math.PI);
    

提交回复
热议问题