Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Changer le repère d'un Graphics

2 réponses
Avatar
Tr
Bonjour à tous,

j'espère que je vais être clair :-)
je dessine une courbe à l'aide de points, jusqu'ici c'est bon.
je souhaite utiliser comme repère de départ pour les coordonnées non
pas le pixel en haut à gauche mais le pixel en bas à gauche de ma zone
de dessin.

comment faire?

merci d'avance.

voici mon petit code:
Sub DessineCourbe()
'l'objet graphics est rattaché à un contrôle de type panel:
Dim g As Graphics = Panel_Courbe.CreateGraphics()
Dim i As Integer

'Tableau est un objet datagridview qui contient les points:
Dim points(Tableau.Rows.Count) As Point
For i = 0 To Tableau.Rows.Count - 1
points(i).X = CInt(Tableau.Rows(i).Cells(0).Value)
points(i).Y = CInt(Tableau.Rows(i).Cells(1).Value)
Next i


Dim pen As New Pen(Color.FromArgb(255, 0, 0, 255))

g.DrawCurve(pen, points)
pen.Dispose()
g.Dispose()
End Sub

--
Réfléchissons un peu: ça n'est pas donné à tout le monde de rire de
soi. (Caricatures...)
tranquille.xav@free.fr

2 réponses

Avatar
Alex C.
On 7 oct, 13:41, wrote:
Bonjour à tous,

j'espère que je vais être clair :-)
je dessine une courbe à l'aide de points, jusqu'ici c'est bon.
je souhaite utiliser comme repère de départ pour les coordonnées no n
pas le pixel en haut à gauche mais le pixel en bas à gauche de ma zon e
de dessin.

comment faire?

merci d'avance.

voici mon petit code:
Sub DessineCourbe()
'l'objet graphics est rattaché à un contrôle de type panel:
        Dim g As Graphics = Panel_Courbe.CreateGraphics()
        Dim i As Integer

        'Tableau est un objet datagridview qui contient les point s:
        Dim points(Tableau.Rows.Count) As Point
        For i = 0 To Tableau.Rows.Count - 1
            points(i).X = CInt(Tableau.Rows(i).Cells(0).Val ue)
            points(i).Y = CInt(Tableau.Rows(i).Cells(1).Val ue)
        Next i

        Dim pen As New Pen(Color.FromArgb(255, 0, 0, 255))

        g.DrawCurve(pen, points)
        pen.Dispose()
        g.Dispose()
    End Sub

--
Réfléchissons un peu: ça n'est pas donné à tout le monde de rir e de
soi. (Caricatures...)




Salut,

Il suffit de dessiner vos points avec le point d'origine en haut à
gauche, puis de faire ce qu'on appelle une translation grâce à la
fonction MultiplyTransform.

Un petit exemple ici avec l'utilisation de cette fonction :
http://www.c2i.fr/code.aspx?IDCodeI9

@+
Avatar
Tr
*Ecrit* *par* *Alex C.*:
On 7 oct, 13:41, wrote:
Bonjour à tous,

j'espère que je vais être clair :-)
je dessine une courbe à l'aide de points, jusqu'ici c'est bon.
je souhaite utiliser comme repère de départ pour les coordonnées non
pas le pixel en haut à gauche mais le pixel en bas à gauche de ma
zone de dessin.

comment faire?

merci d'avance.

voici mon petit code:
Sub DessineCourbe()
'l'objet graphics est rattaché à un contrôle de type panel:
        Dim g As Graphics = Panel_Courbe.CreateGraphics()
        Dim i As Integer

        'Tableau est un objet datagridview qui contient les points:
        Dim points(Tableau.Rows.Count) As Point
        For i = 0 To Tableau.Rows.Count - 1
            points(i).X = CInt(Tableau.Rows(i).Cells(0).Value)
            points(i).Y = CInt(Tableau.Rows(i).Cells(1).Value)
        Next i

        Dim pen As New Pen(Color.FromArgb(255, 0, 0, 255))

        g.DrawCurve(pen, points)
        pen.Dispose()
        g.Dispose()
    End Sub

--
Réfléchissons un peu: ça n'est pas donné à tout le monde de rire de
soi. (Caricatures...)






Salut,



Il suffit de dessiner vos points avec le point d'origine en haut à
gauche, puis de faire ce qu'on appelle une translation grâce à la
fonction MultiplyTransform.



Un petit exemple ici avec l'utilisation de cette fonction :
http://www.c2i.fr/code.aspx?IDCodeI9



ok, merci pour ta réponse.
entre temps j'ai quand-même réussi grâce à ce code:
(par exemple, ici pour tracer mes deux axes)
AxeX et AxeY sont en fait les largeur et hauteur d'un controle panel.
Public Sub DessineAxes()

'reset
g.ResetTransform()

'décale en bas
g.TranslateTransform(20, (AxeY - 20), Drawing2D.MatrixOrder.Append)

'réflexion / à l'axe des x:
g.ScaleTransform(1, -1)

'dessine:
g.DrawLine(p, 0, 0, 0, AxeY)
g.DrawLine(p, 0, 0, AxeX, 0)

End Sub

--
Va au bout. (Etat d'esprit)