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 :

[Visual Studio 2015] Changer la couleur d'une portion d'une courbe sur un graphique


Sujet :

VB.NET

  1. #1
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut [Visual Studio 2015] Changer la couleur d'une portion d'une courbe sur un graphique
    Bonjour à tous,
    Je viens de potasser le cours de Philippe à propos de graphiques en VB Net (http://plasserre.developpez.com/cours/chart/).
    Je créé un graphique de type courbe qui reprend les données d'un tableau.
    J'aimerai savoir s'il existe un moyen simple de modifier la couleur de cette courbe lorsque les valeurs (ordonnées = Y) de la courbe sont négative.
    Je pensais procéder de la sorte :
    1- Tester si au moins l'une des deux valeurs Y du "tronçon" est négative
    2- Alors créer une série de couleur rouge qui tracera le tronçon entre ces deux valeurs
    3- Sinon créer une série de couleur vert qui tracera le tronçon entre ces deux valeurs

    Cela m'oblige à créer autant de série qu'il y a de points (-1).

    Y-aurait-il un autre moyen ?
    Merci d'avance pour vos réponses

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour

    2 séries de points -Positive (Ord Y > origine Oy de référence) et Négative( Ord Y < origine Oy de référencé) suffisent si tu utilises soit :
    -Graphics.DrawCurve (pen,points())
    -GraphicsPath.AddCurve(points())
    Curve c'est pour une courbe spline cardinale ...


    exemple code pour sinus avec GraphicsPath ,un Form & un Panel droppé sur le Form:
    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
     
     
    Imports System.Drawing.Drawing2D
     
    Public Class Form1
     
        Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
            Dim gr As Graphics = e.Graphics
            gr.SmoothingMode = SmoothingMode.HighQuality
            drawPath(gr)
        End Sub
     
        Private Sub drawPath(ByVal gr As Graphics)
            Dim angle As Single
            Dim pt As PointF
     
            Dim PostivePts As New List(Of PointF)
            Dim NegativePts As New List(Of PointF)
            For i As Integer = 0 To 718
                angle = i * Math.PI / 180
                pt = New PointF()
                pt.X = angle * 50.0
                pt.Y = 100 * Math.Sin(angle)
                pt.Y += Panel1.Height / 2
                If pt.Y > Panel1.Height / 2 Then
                    PostivePts.Add(pt)
                Else
                    NegativePts.Add(pt)
                End If
            Next
     
            Using path As New GraphicsPath
     
                path.AddCurve(PostivePts.ToArray)
                gr.DrawPath(Pens.Red, path)
                path.Reset()
                path.AddCurve(NegativePts.ToArray)
                gr.DrawPath(Pens.Green, path)
     
            End Using
     
            Dim p0 As PointF = PostivePts(0)
            Dim p1 As PointF = NegativePts(NegativePts.Count - 1)
            Using myPen As New Pen(Brushes.DarkBlue, 2.0)
                myPen.DashStyle = DashStyle.DashDot
                gr.DrawLine(myPen, p0, p1)
            End Using
     
     
        End Sub
     
        Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
            Panel1.Invalidate()
     
        End Sub
    End Class
    bon code....

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/03/2011, 11h52
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 13h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 14h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 14h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48

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