hatek
Messages postés5Date d'inscriptionsamedi 31 mars 2012StatutMembreDernière intervention30 avril 2012
-
8 avril 2012 à 21:04
Whismeril
Messages postés19022Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention17 avril 2024
-
10 avril 2012 à 17:59
slt tt le monde
je suis débutant en c# je voudrais afficher coordonnée d'une point dans un zone de texte avec un simple clique de souris si qlq un possède une idée je le remercie d'avance et voila un exemple de code qui marche bien
using System;
using ZedGraph;
using ZedGraph.Web;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Resize(object sender, EventArgs e)
{
SetSize();
}
private void SetSize()
{
// permet de laisser une marge de 10 pixels tout autour du graphique
zedGraphControl1.Location = new Point(10, 10);
zedGraphControl1.Size = new Size(ClientRectangle.Width - 20, ClientRectangle.Height - 20);
}
// Build the Chart
private void CreateGraph(ZedGraphControl zgc)
{
// Get a reference to the GraphPane
GraphPane myPane = zedGraphControl1.GraphPane;
// Set the titles
myPane.Title.Text = "My Test Date Graph";
myPane.XAxis.Title.Text = "Date";
myPane.XAxis.Title.Text = "My Y Axis";
// myPane.XAxis.GetCrossAxis;
// Make up some random data points
double x, y;
PointPairList list = new PointPairList();
for ( int i=0; i<36; i++ )
{
x = (double) new XDate( 1995, 5, i+11 );
y = Math.Sin( (double) i * Math.PI / 15.0 );
list.Add( x, y );
}
// Generate a red curve with diamond
// symbols, and "My Curve" in the legend
CurveItem myCurve = myPane.AddCurve( "My Curve",
list, Color.Red, SymbolType.Diamond );
// Set the XAxis to date type
myPane.XAxis.Type = AxisType.Date;
// Tell ZedGraph to refigure the axes since the data
// have changed
zedGraphControl1.AxisChange();
Salut.
Utilise des balises spéciales pour afficher clairement ton code afin que ton post soit plus lisible.
Sinon regarde du côté des listeners qui te permettront de récupérer les clics sur un objet.
--
Pylouq (Lire le Réglement n'a jamais tué personne, au pire ça les a instruit)
Whismeril
Messages postés19022Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention17 avril 2024656 9 avril 2012 à 00:16
Bonsoir,
Si tu l'utilisateur fait un click doit sur le graphique, il peut cocher "Visualiser les valeurs" dans ce cas les coordonnées du point le plus proche de la sourie sont affichées sous forme de Pop Up.
Si tu as les sources de la librairie, regarde du coté de "protected void ZedGraphControl_MouseMove" et de "private Point HandlePointValues"
hatek
Messages postés5Date d'inscriptionsamedi 31 mars 2012StatutMembreDernière intervention30 avril 2012 9 avril 2012 à 21:29
slt et merci pour votre réponse mais je n'ai pas réussi de trouver la solution avec "private Point HandlePointValues" car je suis débutant en c# et je travaille une application vraiment je suis bloque si tu possède un exemple je le remercie une autre fois
Whismeril
Messages postés19022Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention17 avril 2024656 10 avril 2012 à 17:59
Bonjour
la première solution est simple, mais il faut activer l'affichage des valeurs.
Quand le graphique affiche une valeur, un événement est généré.
En t'abonnant à cet événement tu peux ressortir les corrdonnées du point de courbe le plus proche de ta souris.
La ligne ci dessous est à mettre dans la phase d'initialisation de ton graphique, ou de ton formulaire. (Graph est le nom de mon ZedGraph)
Graph.PointValueEvent += new ZedGraphControl.PointValueHandler(Graph_PointValueEvent);//on s'abonne à l'événement
Quand tu vas taper += l'environnement Visua Studio va te proposer de taper 2 fois sur tab pour générer la fonction (ça ne marche pas si tu fais un copier coller de la ligne d'exemple). Fais donc deux Tab.
Ca va t'écrire une méthode générant une erreur:
string Graph_PointValueEvent(ZedGraphControl sender, GraphPane pane, CurveItem curve, int iPt)
{
throw new NotImplementedException();//génère l'execption : Méthode non écrite
}
On constate que cette méthode fournit en paramètres le GrahPane, la Courbe et l'Id du point dans la courbe.
Tu devras modifier le corps de cette méthode pour en faire ce que tu veux:
string Graph_PointValueEvent(ZedGraphControl sender, GraphPane pane, CurveItem curve, int iPt)
{
PointPair point = curve[iPt];//extrait le point numéro [iPt] de la courbe curve
textBox1.Text = point.ToString(); //ecrit les coordonnées au format par défaut dans textbox1
return point.ToString(); // comme la méthode est définie comme une string ça doit retourner une string...
}