VB.Net Coordonné négative dans un PictureBox

cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 - 21 oct. 2007 à 02:06
cs_Kite37 Messages postés 242 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 17 janvier 2018 - 2 déc. 2007 à 11:35
Salut à tous....

J'ai un problème pour faire dessiner des coordonnées dans un picturebox...
Lorsque mes coordonnées en X et en Y sont positives, j'ai pas de problème. Mais si j'ai des coordonnées négatives, il se dessinent dans le picturebox mais ne respecte pas vraiment leur emplacement.

J'utilise ces deux lignes de codes pour connaitre les coordonnées convertient pour desiner dans un picturebox.
Pour faire simple Facteur = 20000.
J'ai fais cela pour mettre toute les coordonnées positives.

Comment est-il possible de dessiner des coordonnées qui peuvent être positive  et ou négative en respcatant l'emplacement réel.

Merci d'avance

CoordXPicturebox = ((Convert.ToDouble(LigneSplit(2)) + Facteur) - ValMinX) * (X_initial / (ValMaxX - ValMinX))
CoordYPicturebox = Y_initial - ((Convert.ToDouble(LigneSplit(1) + Facteur)) - ValMinY) * (Y_initial / (ValMaxY - ValMinY))
Picturebox1_Graphics.DrawLine(MyPen, CoordXPicturebox, CoordYPicturebox - 2, CoordXPicturebox, CoordYPicturebox + 2)
Picturebox1_Graphics.DrawLine(MyPen, CoordXPicturebox - 2, CoordYPicturebox, CoordXPicturebox + 2, CoordYPicturebox)

1 réponse

cs_Kite37 Messages postés 242 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 17 janvier 2018
2 déc. 2007 à 11:35
Hum si c'est pour un traçage de courbe, je t'invite à jeter un oeil à ma source "traçage de courbe V2" qui fait cela très bien .
Je te copie le code correspondant ici tout de même :

For Each courb As courbe In courbs
            If courb IsNot Nothing Then
                'on trace la courbe
                For i As Integer = 1 To courb.pointLenght - 2

                    graph.DrawLine(New Pen(courb.couleur, 2), New Point((picturebox1.Width / 2) + (courb.CourbePoints(i).X * grille), picturebox1.Height / 2 - courb.CourbePoints(i).Y * grille), New Point(picturebox1.Width / 2 + courb.CourbePoints(i + 1).X * grille, picturebox1.Height / 2 - courb.CourbePoints(i + 1).Y * grille))
             
                  Next
            End If
        Next

Explications : tout se résume a cela :
(picturebox1.Width / 2) + (courb.CourbePoints(i).X * grille)
et
(picturebox1.Height / 2 - courb.CourbePoints(i).Y * grille)

En effet, il te suffit de fixer l'origine au milieu de la picturebox (c'est à dire de tracer tout ce que tu veux a partir de son centre).
Ainsi, les coordonnées positive et négative seront respectée (grille est ici une constante fixée dans le programme, ne t'en occupe pas).

En espérant t'avoir aidé,
Cordialement, KiTe

______________________________________
La connaissance est le plus précieux des trésors.
Rejoignez-nous