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

VB.NET Discussion :

Comment créer une PolygonAnnotation sur un graphique qui passe par des points spécifiés


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut Comment créer une PolygonAnnotation sur un graphique qui passe par des points spécifiés
    Bonjour à tous,

    Pourriez vous m'indiquer comment crée un PolygonAnnotation dans un graphique.

    Je souhaiterais que mon polygone passe par les points :
    (-1.3, 100) ; (-1.3, 55.7682) ; (-0.5385, 82.3515) ; (-0.5385, 100)

    les coordonnées correspondent aux valeurs X et Y des axes.

    Je galère ...

    Merci de votre aide

  2. #2
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    Bonjour,

    oula pas de pression ce n'est qu'un graphique
    Un peu de code aurait aidé pour voir ou tu bloque.

    Sinon j'ai bien une petite idée
    tu a 4 points, donc 4 droites à dessiner pour tracer le tour de ton polygone.

    ensuite p-e qu'un cours sur les Chart graphique te serra utile
    http://plasserre.developpez.com/cours/chart/

    voila si tu bloque toujours reviens nous voir avec un peut de code,
    on pourra t'aiguiller sur les points pas clairs

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut
    Bonjour hunteshiva,

    Merci pour ta réponse voici le code que j'ai tenté d'écrire

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     Dim Graph2 As New Chart
            Dim Aire2 As New ChartArea
            Dim S1b As New Series()
            Dim pt1 As New PointF(-1.3, 100)
            Dim pt2 As New PointF(-1.3, 55.7682)
            Dim pt3 As New PointF(-0.5385, 82.3515)
            Dim pt4 As New PointF(-0.5385, 100)
            Dim points As PointF() = {pt1, pt2, pt3, pt4}
            Dim Annot As New PolygonAnnotation
     
            Aire2.Name = "Aire2"
            Graph2.ChartAreas.Add(Aire2)
            Graph2.Cursor = Cursors.Cross
     
            Graph2.Location = New System.Drawing.Point(0, 0)
            Graph2.Size = New System.Drawing.Size(982, 662)
     
            Graph2.ChartAreas(0).AxisX.Title = "DeltaµS"
            Graph2.ChartAreas(0).AxisX.TitleAlignment = StringAlignment.Center
            Graph2.ChartAreas(0).AxisX.LineWidth = 2
            Graph2.ChartAreas(0).AxisX.MajorGrid.Enabled = False
            Graph2.ChartAreas(0).AxisX.MinorGrid.Enabled = False
            Graph2.ChartAreas(0).AxisX.MajorTickMark.Size = 2
            Graph2.ChartAreas(0).AxisX.MajorTickMark.TickMarkStyle = TickMarkStyle.AcrossAxis
            Graph2.ChartAreas(0).AxisX.MinorTickMark.Size = 0.5
            Graph2.ChartAreas(0).AxisX.MinorTickMark.TickMarkStyle = TickMarkStyle.InsideArea
     
            Graph2.ChartAreas(0).AxisY.Title = "%M"
            Graph2.ChartAreas(0).AxisY.TitleAlignment = StringAlignment.Center
            Graph2.ChartAreas(0).AxisY.LineWidth = 2
            Graph2.ChartAreas(0).AxisY.MajorGrid.Enabled = False
            Graph2.ChartAreas(0).AxisY.MinorGrid.Enabled = False
            Graph2.ChartAreas(0).AxisY.MajorTickMark.Size = 2
            Graph2.ChartAreas(0).AxisY.MajorTickMark.TickMarkStyle = TickMarkStyle.AcrossAxis
            Graph2.ChartAreas(0).AxisY.MinorTickMark.Size = 0.5
            Graph2.ChartAreas(0).AxisY.MinorTickMark.TickMarkStyle = TickMarkStyle.InsideArea
     
            S1b.Name = "S1b"
            Graph2.Series.Add("S1b")
            Graph2.Series("S1b").Points.DataBindXY(Tx, Ty)
            Graph2.Series("S1b").ChartType = SeriesChartType.Spline
            Graph2.Series("S1b").BorderWidth = 2
            Graph2.Series("S1b").ChartArea = "Aire2"
            Graph2.Series("S1b").ToolTip = "x : #VALX ; y : #VALY"
     
            Annot.ClipToChartArea = "Aire2"
            Annot.Text = "mon annotation" 'cette ligne fonctionne pas
            Annot.GraphicsPath(points) 'cette ligne ne marche pas et je ne vois pas comment faire
            Annot.BackColor = Color.Red
     
            Form3.Controls.Add(Graph2)
     
            Graph2.Dock = DockStyle.Fill
    2 lignes ne fonctionnent pas et j'ignore ce qui cloche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Annot.Text = "mon annotation" 'cette ligne fonctionne pas
            Annot.GraphicsPath(points) 'cette ligne ne marche pas et je ne vois pas comment faire
    ensuite p-e qu'un cours sur les Chart graphique te serra utile
    http://plasserre.developpez.com/cours/chart/
    Le cours sur les chart je l'ai lu et relu mais je galère avec les annotations.

    Sinon j'ai bien une petite idée
    tu a 4 points, donc 4 droites à dessiner pour tracer le tour de ton polygone.
    Peux tu m'en dire plus ? (je comprends vite mais il faut m'expliquer longtemps)

    encore merci pour ton aide

  4. #4
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Annot As New PolygonAnnotation
    je ne connaissait pas

    l'idée part du principe qu'il n'y a pas d'outils pour faire un polygone.

    1. tu créer ton chart graphique (perso il est pas codé mais fait avec la boite à outils de vb )
    2. tu créer ton chart area
    3. tu créer tes 4 séries (une séries à 2 pts uniquement, elle représente un coté de ton polygone)
    4. tu les ajoutes
    5. tu fait le design qui va bien

    * je t'ai mis un exemple de code que j'ai pus faire, tu y trouvera p-e des fonctions intéressantes*


    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
            ' #####################################################
            ' ############### Affichage du graphique ##############
            ' #####################################################
     
            ' Nettoyage de l'espace grahpique
            Chart_Bareme.Legends.Clear()
            Chart_Bareme.Series.Clear()
            Chart_Bareme.Annotations.Clear()
            Chart_Bareme.ChartAreas.Clear()
            Chart_Bareme.Titles.Clear()
     
            ' Créer ChartArea (zone graphique)
            Dim ChartArea1 As New System.Windows.Forms.DataVisualization.Charting.ChartArea()
            ' Creation des series (qui contiendront les DataPoint)
            Dim serie_Consigne As New System.Windows.Forms.DataVisualization.Charting.Series()
            Dim serie_CP As New System.Windows.Forms.DataVisualization.Charting.Series()
     
            ' Ajouter le Chart Area à la Collection ChartAreas du Chart
            Chart_Bareme.ChartAreas.Add(ChartArea1)
     
            ' Ajout des points
            With serie_Consigne
                '' Nom de la Série
                .Name = "Temperature de consigne"
                '' On indique d'afficher la Serie sur le ChartArea1
                .ChartArea = "ChartArea1"
                '' Ajouter les series à la collection Series du chart
                Chart_Bareme.Series.Add(serie_Consigne)
                '' Ajouts des points à la série
                For i As Integer = MonBareme.Heure_Debut To MonBareme.Heure_Fin
                    Chart_Bareme.Series(.Name).Points.AddXY(MonEssai.Releleves.Temps(i), Temperatures(i))
                Next
            End With
     
            With serie_CP
                '' Nom de la Série
                .Name = "Temperature à coeur produit"
                '' On indique d'afficher la Serie sur le ChartArea1
                .ChartArea = "ChartArea1"
                '' Ajouter les series à la collection Series du chart
                Chart_Bareme.Series.Add(serie_CP)
                '' Ajouts des points à la série
                For i As Integer = MonBareme.Heure_Debut To MonBareme.Heure_Fin
                    Chart_Bareme.Series(.Name).Points.AddXY(MonEssai.Releleves.Temps(i), MonEssai.Releleves.CP.Température(i))
                Next
            End With
     
            ' Zone De dessin
            With Chart_Bareme
                ' Style du graphique des courbes
                For i As Integer = 0 To .Series.Count - 1
                    .Series(i).ChartType = SeriesChartType.Spline
                Next
     
                ' Palette de couleur de courbes
                .Palette = ChartColorPalette.BrightPastel
     
     
                ' Modifie les axes
                '' Nom
                .ChartAreas(0).AxisX.Title = "Temps"
                .ChartAreas(0).AxisY.Title = "Température (°C)"
     
                '' Intervale
                .ChartAreas(0).AxisY.Interval = 10
     
                ''Récupération de la valeur max des températures
                Temperature_MAX = Array_Max_Value(Temperatures)
                '' Valeur Max du graphique
                .ChartAreas(0).AxisY.Maximum = Dizaine_sup(Temperature_MAX)
     
            End With

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut
    Merci pour ta réponse.

    Mais ce n'est pas ce que je veux faire : je veux colorer certaines zones de mon graphique pour faire style diagramme de phase (je ne sais pas si celà te parle un truc de ce genre : )

    C'est pour ça qu'un polygonannotation semble tout indiqué.

    J'ai néanmoins un peu progressé et je bloque sur la définition des points qui sont en pixel pour le polygon annotation or je veux tracer ce polygon selon les axes X et Y comment faire pour récupérer les coordonnées en pixel d'un point graphique définit par les axes X et Y ?

    Merci de votre aide

Discussions similaires

  1. Comment créer une partition sur DOS ?
    Par wisso dans le forum Windows XP
    Réponses: 1
    Dernier message: 11/12/2009, 00h28
  2. Réponses: 1
    Dernier message: 24/04/2009, 21h46
  3. comment créer une extension sur Mozilla
    Par timtima dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 17/02/2008, 19h57
  4. [C# 2.0] Comment créer une table sur un serveur SQL 2000 ?
    Par Filippo dans le forum Accès aux données
    Réponses: 1
    Dernier message: 15/09/2006, 13h30

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