Pourquoi ne auto Zoom/Défilement fonctionne pas pour mon Tableau?
pour faire court, j'ai vérifié sur le "WinFormsChartSamples" fourni par Microsoft. Ce que je voulais savoir, c'est comment faire pour activer le zoom et le défilement pour Chartcontrols. L'exemple qui est indiqué, il est assez court.
using System.Windows.Forms.DataVisualization.Charting;
...
//Set automatic zooming
chart1.ChartAreas["Default"].AxisX.ScaleView.Zoomable = true;
chart1.ChartAreas["Default"].AxisY.ScaleView.Zoomable = true;
//Set automatic scrolling
chart1.ChartAreas["Default"].CursorX.AutoScroll = true;
chart1.ChartAreas["Default"].CursorY.AutoScroll = true;
...
J'ai essayé et rien ne s'est passé, pas de zoom et pas de défilement. J'ai essayé deux choses:
-
Dans Form1.Le concepteur.cs, j'ai ajouté cette information pour le graphique.
chartArea1.Name = "ChartArea1"; chartArea1.CursorX.AutoScroll = true; chartArea1.CursorY.AutoScroll = true; chartArea1.AxisX.ScaleView.Zoomable = true; chartArea1.AxisY.ScaleView.Zoomable = true; this.chart1.ChartAreas.Add(chartArea1); this.chart1.Cursor = System.Windows.Forms.Cursors.Cross; legend1.Name = "Legend1"; this.chart1.Legends.Add(legend1); this.chart1.Location = new System.Drawing.Point(297, 62); this.chart1.Name = "chart1"; series1.ChartArea = "ChartArea1"; series1.Legend = "Legend1"; series1.Name = "Series1"; this.chart1.Series.Add(series1); this.chart1.Size = new System.Drawing.Size(963, 668); this.chart1.TabIndex = 6; this.chart1.Text = "chart1";
-
J'ai essayé de l'ajouter directement dans le constructeur de Form1.cs.
Peut-être qu'il est important de mentionner que je suis en utilisant OpenFileDialog pour ajouter des données à la série:
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
Stream fileStream = null;
OpenFileDialog fDialog = new OpenFileDialog();
fDialog.Title = "Open File..";
//First the description of the file separated by "|"
fDialog.Filter = "((ASC files)| *.asc";
fDialog.InitialDirectory = @"C:\";
//Show Messagebox if the file was loaded (Source: MSDN - FileDialog.FilterProperty)
if (fDialog.ShowDialog() == DialogResult.OK)
{
MessageBox.Show("The File was loaded successfully.");
try
{
if ((fileStream = fDialog.OpenFile()) != null)
{
using (fileStream)
{
//Insert code for reading the stream here.
Spectrum newSpectrum = new Spectrum(chart1.Series.Count, fDialog.FileName,
fDialog.SafeFileName, DataHandler.readSpectrumFromFile(fileStream));
addSpectrumToView(newSpectrum);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
Tout conseil est le bienvenu, merci d'avance,
BC++
Vous devez vous connecter pour publier un commentaire.
Ont un coup d'oeil ici: http://archive.msdn.microsoft.com/mschart Il y a un exemple qui ne le zoom/défilement et beaucoup, beaucoup plus! 🙂
Je pense que vous avez été vraiment à la recherche de ce:
utilisé en conjonction avec ce que vous avez déjà devrait bien fonctionner, ce qui devrait ressembler à ceci:
Pour faciliter le zoom, ajoutez une trackbar et l'utiliser pour effectuer un zoom:
le "maximum - valeur" est de sorte que plus la trackbar valeur, moins le nombre de points indiqué (plus proche de zoom)
et assurez-vous que le concepteur de la "chart1->ChartAreas->Axes->(selon les axes)->scaleview->zoomable" est défini à true
Une barre de défilement s'affichent normalement lorsqu'un point de données dépasse la scaleview de la taille d'un axe, si elle a été définie (défilement ne fonctionne pas vraiment fiable si gauche à 'auto'), si il n'est pas le définir, si une barre de défilement ne s'affiche pas, un trackbar peut encore être utilisé:
Assurez-vous de définir le "Maximum" dans la trackbars à un bon nombre élevé (par exemple 5000) et de la "Valeur" de ce que vous désirez qu'il se charge au.
Avons pas encore d'avis trop de différence entre "trackBar_Scroll" et "trackBar_ValueChanged", à l'exception de "ValueChanged" fonctionne si le curseur est déplacé par le programme utilisateur ou clic de souris, alors que le "Scoll" ne fonctionne que si ému par les utilisateurs de la souris cliquez sur.
Tout ce que j'ai manqué?
Mes utilisateurs, des aversions, le comportement standard de la mschart de zoom et de défilement. C'est pourquoi je mettre en œuvre un de la souris en fonction de zoom/défilement qui utilisent glisser la molette de la sur les axes.
Le code source est ici: https://bitbucket.org/controlbreak/mschartfriend
Il est très simple et court, vous pouvez le changer très rapidement si vous avez besoin d'.