IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C# et directX] Réaliser un graphique


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 61
    Par défaut [C# et directX] Réaliser un graphique
    Bonjour a tous.

    Je cherche de la doc, quelle classe à utiliser pour réaliser un objet graphique en directx.
    L'idée est qu'un utilisateur charge des donnés brutes et elles sont affichés dans un graphique. il doit pouvoir sélectionner deux bornes avec la souris (sur les abscisses) afin de sélectionné qu'une partie des donnée. Il me manque la partie affichage.

    Toutes suggestion est bonne a prendre!

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    un objet graphique en directx.
    • pour un graphique 2D, une picture box convient (directX est inutile),
    • pour un graphique 3D, il y Xna qui est une surcouche au-dessus de DirectX.

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    et il te faut directX pour faire ca ??
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 61
    Par défaut
    et il te faut directX pour faire ca ??
    Pas vraiment mais disons qu'il s'agit là d'un projet un peu scolaire.

    Il faut que je puisse interagir avec se graphique. Avec une picturebox, dit-tu? Je doit donc créer une bitmap puis l'afficher ?
    Je pensai a directX car cela pourrait-être plus "jolie" ...

    De toute façon je tâte le terrai. Je suis ouvert à tout proposition.

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    si c'est pour faire un graphique utilises zedgraph t'auras pas grand chose à faire

    enfin directX est utile pour faire de la 3d ou éventuellement de la 2d animée
    pour de l'afficahge 2d simple, ca sert à rien de passer trop de temps dans le développement pour aucune différence de rendu et 1% de gagné sur le processeur
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 61
    Par défaut
    Bon, ZedGraph n'est pas mal et facile a utiliser.
    Sait tu comment je peut dessiner sur le graphique ?
    Je cherche a dessiner deux axes verticaux, récupérer les coordonné x afin de restreindre d'agir sur les donnés a afficher sur un autre graphe ?

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    je n'ai jamais utilisé zedgraph, moi je fais tout "à la main"
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 61
    Par défaut
    Et puis j'y pense, il faudra que se soit animé. Je veux que cela "resemble" a un oscilloscope. Je pense que je doit bien passer par Directx.

  9. #9
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    pas forcément, déjà il y a wpf qui permet d'obtenir des performances en graphismes car il passe par directX le tout sans se préoccuper de directX

    sinon en windows forms, c'est peut etre jouable via un bufferedgraphics
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    avec les winforms et GDI+ (via la classe Graphics) on peut faire plein de jolies choses

    Sinon, si tu fais des "graph", tu peux utiliser les librairies gratuites de composants microsoft ChartFX... tu donnes le tableau de données et tu les affiches ensuite. Si les données changent (pour les animations, suffit de faire varier la zone de données à afficher), tu auras ton animation prise directement en charge par le composant

    Je te conseillerais l'usage de composants existants (comme ZedGraph ou MSChartFx, pas sur à 100% du nom exacte) car tu y gagneras beaucoup en temps et tu pourras te focaliser sur l'essentiel plutot que sur l'affichage !!!

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 61
    Par défaut
    Tout a fait, je m'aperçois en effet que directx est sur-dimensionné, pour mon besoin. Je cherche encore comment dessiner correctement un axe verticale. Pour le momment sa marche plus ou moins voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            private void DataBrute_MouseMove(object sender, MouseEventArgs e)
            {
     
                DataBrute.Refresh();
                GraphPane Pane = DataBrute.GraphPane;
                Pen pen = new Pen(Color.Black);
                Point pt1 = new Point(e.X, 30);
                Point pt2 = new Point(e.X, (int)Pane.Chart.Rect.Height);
                Graphics g = DataBrute.CreateGraphics();
                g.DrawLine(pen, pt1, pt2);
                //Pane.Draw(g);
            }
    ce code réagi au passage de la souris sur le graphe. Cela me dessine un axe verticale, mais il sort de la zone de graph, tout en restant dans le contrôle ZedGraph. Une idée pour les ancien de ZedGraph? je passe en résolut.

    EDIT : J'ai trouvé et je vais travailler avec GDI et ZedGraph. Sa m'a l'aire pas mal pour le momment. Merci pour votre aide.

    Le code modifier pour dessiner dans le chart:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
            private void DataBrute_MouseMove(object sender, MouseEventArgs e)
            {
                DataBrute.Refresh();
                GraphPane Pane = DataBrute.GraphPane;
     
                Pen pen = new Pen(Color.Black);
                Point pt1 = new Point(e.X, (int)Pane.Chart.Rect.Y + 1);
                Point pt2 = new Point(e.X, (int)Pane.Chart.Rect.Height + (int)Pane.Chart.Rect.Y);
                Graphics g = DataBrute.CreateGraphics();
     
                if ((e.X > (Pane.Chart.Rect.X)) && (e.X < Pane.Chart.Rect.X + Pane.Chart.Rect.Width))
                    g.DrawLine(pen, pt1, pt2);
    }

  12. #12
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    à savoir sur les graphics :

    uncontrol.refresh appel l'évènement paint (donc à priori n'est pas utile, car le controle sait très bien quand il doit se redéssiner)

    l'évènement paint redessine le controle en lui meme, effacant tout ce que tu avais dessiné dessus

    il convient donc de dessiner sur l'évènement paint du control qu'on rempli

    il existe aussi le bufferedgraphics, qui permet dans certains cas d'avoir plus de performances
    dans ce cas on dessine sur le graphics du bufferedgraphics n'importe où dans le code, on fini par .render et on ajoute aussi le .render(e.graphics) dans l'évènement paint du control
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Graphique] Réalisation de graphiques
    Par guigui69 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 05/08/2008, 14h17
  2. Quelle application pour réaliser des graphiques ?
    Par giuseppe2 dans le forum Débuter
    Réponses: 1
    Dernier message: 01/06/2008, 03h42
  3. [DirectX] Réaliser un zoom sur une de mes surfaces
    Par Rodrigue dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 26/03/2008, 20h00
  4. [c#]réalisation de graphiques(statistiques)
    Par chasse dans le forum Windows Forms
    Réponses: 1
    Dernier message: 10/11/2006, 09h46
  5. Rave Reports : Réaliser des graphiques statistiques ?
    Par MaTHieU_ dans le forum Delphi
    Réponses: 1
    Dernier message: 02/11/2006, 10h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo