RAPPRESENTAZIONE SERIE STORICA

Codice:

using System;

using System.Drawing;

using System.Windows.Forms;


namespace WinFormsApp2

{

    public partial class Form1 : Form

    {

        private Panel panelGrafico;


        public Form1()

        {

            InitializeComponent();

            InitializeGrafico();

        }


        private void InitializeGrafico()

        {

            panelGrafico = new Panel();

            panelGrafico.Dock = DockStyle.Fill;

            Controls.Add(panelGrafico);

        }


        private void button1_Click(object sender, EventArgs e)

        {

            // Impostazioni per la serie storica

            int lunghezzaSerie = 50; // Lunghezza della serie storica (es. 12 mesi)

            int valoreMinimo = 0;   // Valore minimo dei dati

            int valoreMassimo = 200;  // Valore massimo dei dati


            // Generazione dei dati per la serie storica

            Random random = new Random();

            double[] dati = new double[lunghezzaSerie];

            for (int i = 0; i < lunghezzaSerie; i++)

            {

                // Genera un valore casuale compreso tra valoreMinimo e valoreMassimo

                dati[i] = random.Next(valoreMinimo, valoreMassimo + 1);

            }


            // Disegno del grafico

            panelGrafico.Paint += (s, args) =>

            {

                // Calcolo delle dimensioni del grafico

                int margineSinistro = 50;

                int margineDestro = 50;

                int margineSuperiore = 50;

                int margineInferiore = 50;

                int larghezzaGrafico = panelGrafico.Width - margineSinistro - margineDestro;

                int altezzaGrafico = panelGrafico.Height - margineSuperiore - margineInferiore;


                // Calcolo dello spazio tra ciascun punto lungo l'asse x

                float spazioPunti = (float)larghezzaGrafico / (lunghezzaSerie - 1);


                // Calcolo dello spazio tra i valori sull'asse y

                float spazioValoriY = 5;


                // Disegno dell'asse x

                args.Graphics.DrawLine(Pens.Black, margineSinistro, panelGrafico.Height - margineInferiore, panelGrafico.Width - margineDestro, panelGrafico.Height - margineInferiore);

                args.Graphics.DrawString("Mesi", DefaultFont, Brushes.Black, panelGrafico.Width - margineDestro - 30, panelGrafico.Height - margineInferiore + 10);


                // Disegno dell'asse y e dei valori

                for (int i = 0; i <= valoreMassimo; i += 15)

                {

                    float y = panelGrafico.Height - margineInferiore - (i - valoreMinimo) * (altezzaGrafico / (float)(valoreMassimo - valoreMinimo));

                    args.Graphics.DrawLine(Pens.Black, margineSinistro, y, margineSinistro - 5, y);

                    args.Graphics.DrawString(i.ToString(), DefaultFont, Brushes.Black, margineSinistro - 40, y - 7);

                }


                // Disegno della serie storica

                for (int i = 0; i < lunghezzaSerie - 1; i++)

                {

                    float x1 = margineSinistro + i * spazioPunti;

                    float y1 = panelGrafico.Height - margineInferiore - (float)((dati[i] - valoreMinimo) / (valoreMassimo - valoreMinimo) * altezzaGrafico);

                    float x2 = margineSinistro + (i + 1) * spazioPunti;

                    float y2 = panelGrafico.Height - margineInferiore - (float)((dati[i + 1] - valoreMinimo) / (valoreMassimo - valoreMinimo) * altezzaGrafico);


                    args.Graphics.DrawLine(Pens.Blue, x1, y1, x2, y2);

                }

            };


            // Forza il ridisegno del pannello per visualizzare il grafico

            panelGrafico.Invalidate();

        }

    }

}


Output:



Post più popolari