C# 每次调用函数时,图形都会调整大小并变小

C# 每次调用函数时,图形都会调整大小并变小,c#,C#,我需要每隔一段时间调用一次函数。但是,每次我这样做时,图形(饼图)都会调整自身大小,并变得比以前获得的饼图更小 void LoadPieChart(DateTime lower, DateTime higher) { splitContainer1.Panel1.Controls.Remove(pieChart); pieChart.Series.Clear(); pieChart.Palette = ChartColorPalette.F

我需要每隔一段时间调用一次函数。但是,每次我这样做时,图形(饼图)都会调整自身大小,并变得比以前获得的饼图更小

void LoadPieChart(DateTime lower, DateTime higher)
    {
        splitContainer1.Panel1.Controls.Remove(pieChart);
        pieChart.Series.Clear();
        pieChart.Palette = ChartColorPalette.Fire;
        pieChart.BackColor = Color.Black;
        pieChart.Titles.Add("LOST OPPORTUNITY");
        pieChart.ChartAreas[0].BackColor = Color.Transparent;
        Series series1 = new Series
        {
            Name = "series1",
            IsVisibleInLegend = true,
            Color = System.Drawing.Color.White,
            ChartType = SeriesChartType.Pie
        };

        pieChart.Series.Add(series1);
        int num = A.CountLO();
        List<string>[] lista = new List<string>[7];
        lista = A.SelectLO();
        float counter_manpower = 0;
        float counter_spares = 0;
        float counter_tools = 0;
        float counter_other = 0;

        string[] reason = lista[6].ToArray();
        string[] low = lista[4].ToArray();            
        string[] up = lista[5].ToArray();
        string[] collection = new string[366];

        for (int j = num-LO; j < num; j++)
        {
            DateTime x = DateTime.Parse(low[j]);
            DateTime y = DateTime.Parse(up[j]);
            if (x.Date>=lower.Date && y.Date<=higher.Date)
            {
                if (reason[j].Equals("LACK OF MANPOWER"))
                    counter_manpower++;
                if (reason[j].Equals("LACK OF SPARES"))
                    counter_spares++;
                if (reason[j].Equals("LACK OF TOOLS"))
                    counter_tools++;
                if (!reason[j].Equals("LACK OF MANPOWER") && !reason[j].Equals("LACK OF SPARES") && !reason[j].Equals("LACK OF TOOLS"))
                {
                    counter_other++;
                }
            }

        }

        float a = ((counter_manpower/(counter_manpower+counter_spares+counter_tools+counter_other))*100);
        float b = ((counter_spares / (counter_manpower + counter_spares + counter_tools+counter_other)) * 100);
        float c = ((counter_tools / (counter_manpower + counter_spares + counter_tools+counter_other)) * 100);
        float d = ((counter_other / (counter_manpower + counter_spares + counter_tools + counter_other)) * 100);
        double aa = Math.Truncate(100 * a) / 100;
        double bb = Math.Truncate(100 * b) / 100;
        double cc = Math.Truncate(100 * c) / 100;
        double dd = Math.Truncate(100 * d) / 100;

        series1.Points.Add(counter_manpower);
        var p1 = series1.Points[0];
        Math.Round(a, 1);
        Math.Round(b, 1);
        Math.Round(c, 1);
        if (counter_manpower!=0)
            p1.AxisLabel = (aa.ToString() + "%");
        p1.LegendText = "LACK OF MANPOWER";
        p1.Color = Color.Red;

        series1.Points.Add(counter_spares);
        p1 = series1.Points[1];
        if (counter_spares!=0)
            p1.AxisLabel = (bb.ToString() + "%");
        p1.LegendText = "LACK OF SPARES";
        p1.Color = Color.Yellow;

        series1.Points.Add(counter_tools);
        p1 = series1.Points[2];
        if(counter_tools!=0)
            p1.AxisLabel = (cc.ToString() + "%");
        p1.LegendText = "LACK OF TOOLS";
        p1.Color = Color.Orange;


        series1.Points.Add(counter_other);
        p1 = series1.Points[3];

            p1.AxisLabel = (dd.ToString() + "%");
        p1.LegendText = "OTHER";
        p1.Color = Color.Maroon;
        //pieChart.Invalidate();

        splitContainer1.Panel1.Controls.Add(pieChart);
    }

我不确定
pieChart
是在哪里定义的。。。私人领域??如果是这样,请在从容器中删除上一个后,尝试创建新的
PieChart

splitContainer1.Panel1.Controls.Remove(pieChart);
pieChart = new PieChart();
pieChart.Series.Clear();
我猜在代码中的某个地方,您正在累积一个值,而不是赋值,因此当您在同一个
PieChart
上调用函数时,它会逐渐变小。清除
pieChart
可以解决此问题

splitContainer1.Panel1.Controls.Remove(pieChart);
pieChart = new PieChart();
pieChart.Series.Clear();