Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click With Me.Chart1.Series("Series1").Points .AddXY(2, 0) .AddXY(2, -500) End With With Me.Chart1.Series("Series1").Points .AddXY(2, 0) .AddXY(18, 0) End With With Me.Chart1.Series("Series5").Points .AddXY(2, -500) .AddXY(4, 200) .AddXY(6, -400) End With With Me.Chart1.Series("Series2").Points .AddXY(6, -400) .AddXY(8, 150) .AddXY(10, -550) End With With Me.Chart1.Series("Series3").Points .AddXY(10, -550) .AddXY(12, 100) .AddXY(14, -300) End With With Me.Chart1.Series("Series4").Points .AddXY(14, -300) .AddXY(16, 50) .AddXY(18, -550) End With With Me.Chart1.Series("Series6").Points .AddXY(18, 0) .AddXY(18, -550) End With With Me.Chart1 .ChartAreas(0).AxisY.IsReversed = True 'Pour masquer les étiquettes de l'axe X .ChartAreas(0).AxisX.LabelStyle.Enabled = False 'Pour masquer les étiquettes de l'axe Y .ChartAreas(0).AxisY.LabelStyle.Enabled = False 'Pour masquer les quadrillages dans le sens X .ChartAreas(0).AxisX.MajorGrid.Enabled = False
'Pour masquer les quadrillages dans le sens Y .ChartAreas(0).AxisY.MajorGrid.Enabled = False 'Pour masquer les graduations dans le sens X .ChartAreas(0).AxisX.MajorTickMark.Enabled = False 'Pour masquer les graduations dans le sens Y .ChartAreas(0).AxisY.MajorTickMark.Enabled = False 'Pour masquer l'axe X .ChartAreas(0).AxisY.Crossing = 0 .ChartAreas(0).AxisX.IsMarksNextToAxis = False .ChartAreas(0).AxisX.LineWidth = 0 'Pour masquer l'axe Y .ChartAreas(0).AxisY.LineWidth = 0 'pour maquer la légend .Legends(0).Enabled = False 'Pour donner une épaisseur de 2 pts pour le graphe .Series("Series1").BorderWidth = 1 .Series("Series2").BorderWidth = 2 .Series("Series3").BorderWidth = 2 .Series("Series4").BorderWidth = 2 .Series("Series5").BorderWidth = 2 .Series("Series6").BorderWidth = 1 .Series("Series0").BorderWidth = 1 'Redimensionner le graphe 'Pour donner au graphe une couleur noir .Series("Series1").Color = Color.Black .Series("Series2").Color = Color.Black .Series("Series3").Color = Color.Black .Series("Series4").Color = Color.Black .Series("Series5").Color = Color.Black .Series("Series6").Color = Color.Black .Series("Series0").Color = Color.Black End With End Sub
je voulais dessiner se qu'on appel un appuis double dans graphe
j'ai créé le code suivant
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim g As Graphics g = Chart1.CreateGraphics X = 40 Y = 50 ' Triangle Dim blackPen As New Pen(Color.Black, 1) Dim pointA1 As New Point(X, Y) Dim pointA2 As New Point(X - 20, Y + 25) Dim pointA3 As New Point(X + 20, Y + 25) Dim pointA4 As New Point(X, Y) Dim curvePoints1 As Point() = {pointA1, pointA2, pointA3, pointA4} g.DrawPolygon(blackPen, curvePoints1) ' Ligne Dim pointB1 As New Point(X - 30, Y + 25) Dim pointB2 As New Point(X + 30, Y + 25) Dim curvePoints2 As Point() = {pointB1, pointB2} g.DrawPolygon(blackPen, curvePoints2) ' Cercle g.DrawArc(Pens.Blue, X - 25, Y + 25, 10, 10, 300, 360) g.DrawArc(Pens.Blue, X + 15, Y + 25, 10, 10, 300, 360) ' Ligne Dim pointC1 As New Point(X - 30, Y + 35) Dim pointC2 As New Point(X + 30, Y + 35) Dim curvePoints3 As Point() = {pointC1, pointC2} g.DrawPolygon(blackPen, curvePoints3) End Sub
mais le problème et que je veux qu'il soit dessiner au point 0,0 de l'axe X,Y (au début du Diagramme)
alors ma question est la suivante
comme je peux récupérer la localisation du point X,Y non par rapport à l'axe X,Y mais par rapport au chart
je ne peux pas donner une localisation approximative car la position de l'axe X change par rapport aux point du diagramme
je ne c'est pas si j'ai bien expliquer
Merci d'avance
cs_Le Pivert
Messages postés7899Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention21 septembre 2023137 7 oct. 2016 à 16:31
J'ai enfin trouvé!
Dim g As Graphics
Dim x As Integer
Dim y As Integer
g = Chart1.CreateGraphics
y = CInt((Chart1.ChartAreas(0).AxisY.ValueToPixelPosition(y)))
y = y - 30 'hauteur du triangle
x = CInt((Chart1.ChartAreas(0).AxisX.ValueToPixelPosition(x)))
Voilà
kikou93
Messages postés417Date d'inscriptionmardi 4 février 2014StatutMembreDernière intervention24 septembre 20181 7 oct. 2016 à 18:39
Ça marche très bien
1000 Merci cs_Le Pivert pour ton aide
kikou93
Messages postés417Date d'inscriptionmardi 4 février 2014StatutMembreDernière intervention24 septembre 20181 6 oct. 2016 à 20:31
non se ne sont pas les mêmes
première mot l'axe X,Y ne commence pas a partir de X=0 dans le chart
et deuxième mot l'echelle de l'axe n'est pas le memeque celui utilisé dans le contrôle
par exemple :
ici X= 2 mais la distance entre 0 et 2 n'est pas vraiment la distance qui est utilisé pour un contrôle (elle est multiplié par un echele spécial)
je ne c'est pas si j'ai bien expliquer
Bonsoir Whismeril J'ai trouvé ce lien
https://msdn.microsoft.com/fr-fr/library/dd456731.aspx il dise que on peut convertir les coordonnées en pixel avec La classe ChartGraphics (PointF, RectangleF et SizeF)
Mais j'ai beau chercher je ne trouvé pas un article qui parle de chart et PointF en même temps
kikou93
Messages postés417Date d'inscriptionmardi 4 février 2014StatutMembreDernière intervention24 septembre 20181
>
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 2019 Modifié par kikou93 le 7/10/2016 à 10:34
Bonjour cs_ShayW en lisant le lien que tu m'a donné
j'ai trouvé la fonction suivante : GetRelativePoint(PointF) cette fonction prend les coordonnées absolues (à partir du diagramme) les coordonnées relatives (coordonnées d'un point dans le contrôle chart).
kikou93
Messages postés417Date d'inscriptionmardi 4 février 2014StatutMembreDernière intervention24 septembre 20181 7 oct. 2016 à 11:36
Bonjour cs_Le Privert
Merci pour ta réponse
J'ai déjà vue ce lien, ça m'a déjà beaucoup servi pour créer le code ci-dessus
Le graphique ligne ne suffit pas? tu veux dire si je suis obligé de dessiner l'appuis ou non ?
si c'est ça, non je ne suis pas obligé c'est juste pour améliorer l'apparence du diagramme (Le rendre plus présentable)
le problème ce sont les coordonnées de départ de l'appuis que je veux ajouter, par exemple si je choisi :
X =0 et Y=0
ça ne dessine pas l'appuis dans le point vert mais dans le point rouge
7 oct. 2016 à 18:39
1000 Merci cs_Le Pivert pour ton aide