using System;
using System.Drawing;
using System.Windows.Forms;
// add reference assembly
using System.Windows.Forms.DataVisualization.Charting;
namespace Chart_2
{
public partial class Form1 : Form
{
const int maxdati = 50000; // quello che ti serve
Int16
[] Mvolt_avg0
= new Int16
[maxdati
]; // matrice con dati Int16
[] Mvolt_avg1
= new Int16
[maxdati
]; // matrice con dati double pos = 0;
public Form1()
{
InitializeComponent();
//dati fittizi su due matrici, metti i tuoi
double s = 0;
for (int indice = 0; indice < maxdati; indice++)
{
s += .1;
Mvolt_avg0[indice] = Convert.ToInt16(Math.Sin(s) * indice / 4);
Mvolt_avg1[maxdati - indice - 1] = Convert.ToInt16(Math.Sin(s * .1) * indice / 4);
}
hScrollBarRANGE.Minimum = 10; // al minimo mostra 10 valori di x
hScrollBarRANGE.Maximum = maxdati; // al massimo li mostra tutti
hScrollBarRANGE.Value = maxdati / 20; // si parte con una finestra scrollabile che mostra un ventesimo dei dati totali
}
private void butArray_Click(object sender, EventArgs e)
{
chartPSNR.Series.Clear();
chartPSNR.Titles.Clear();
chartPSNR.Titles.Add("dati fittizi");
chartPSNR.Series.Add("Test0"); // Grafico su indice 0
chartPSNR.Series.Add("Test1"); // Grafico su indice 1
chartPSNR.Series[0].ChartType = SeriesChartType.FastLine; // stile visualizzazione matrice 0
chartPSNR.Series[1].ChartType = SeriesChartType.FastLine; // stile visualizzazione matrice 1
chartPSNR.Palette = ChartColorPalette.BrightPastel;
chartPSNR.ChartAreas[0].AxisX.ScrollBar.Enabled = true;
chartPSNR.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside = false;
chartPSNR.ChartAreas[0].AxisX.ScrollBar.Size = 20;
chartPSNR.ChartAreas[0].AxisX.ScrollBar.ButtonColor = Color.WhiteSmoke;
chartPSNR.ChartAreas[0].AxisX.ScrollBar.BackColor = Color.WhiteSmoke;
chartPSNR.ChartAreas[0].AxisX.ScrollBar.LineColor = Color.Gray;
chartPSNR.Series[0].Points.DataBindY(Mvolt_avg0); // carica la matrice 0
chartPSNR.Series[1].Points.DataBindY(Mvolt_avg1); // carica la matrice 1
}
private void hScrollBarRANGE_ValueChanged(object sender, EventArgs e)
{
pos = chartPSNR.ChartAreas[0].AxisX.ScaleView.Position; // salvo la posizione
chartPSNR.ChartAreas[0].AxisX.ScaleView.MinSize = hScrollBarRANGE.Value; // aggiusto il range
chartPSNR.ChartAreas[0].AxisX.ScaleView.Zoom(0, 0); // zoom
chartPSNR.ChartAreas[0].AxisX.ScaleView.Position = pos; // reimposto la posizione
}
}
}