Coordonnée X,Y après un translatetransform [Résolu]

Signaler
Messages postés
7
Date d'inscription
mardi 2 mars 2004
Statut
Membre
Dernière intervention
2 juillet 2008
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
Bonjour à tous,

Je voudrais savoir comment il est possible d'obtenir les coordonées exactes après avoir utilisé la fonction translatetransform.

Voici mon petit programme qui centre le dessin d'un rectangle sur un control PictureBox

Public

Class Form1

Private ech
As
Single = 1

Private W
As
Single = 800

Private H
As
Single = 600

Private
Sub Form1_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Load

'initialise mes 2 textboxtxt1.Text W.ToStringtxt2.Text H.ToString

End
Sub

Private
Sub bnt_click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Bnt.Click

Dim eW
As
Single = Pic.Width

Dim eH
As
Single = Pic.Height

Dim sW
As
Single = 0

Dim sH
As
Single = 0
'je recupere les valeurs hauteur, largeurW CSng(txt1.Text)H

CSng(txt2.Text)
'Verifie si la largeur du rectangle est plus grande que celle du picturebox et calcule l'echelle

If eW <= W
ThensW = eW / (W + 100)

ElsesW = W + 100

End
If

'Verifie si la hauteur du rectangle est plus grande que celle du picturebox et calcule l'echelle

If eH <= H
ThensH = eH / (H + 100)

ElsesH = H + 100

End
If

'Recupere la valeur de l'échelle
If sH > sW
Thenech = sW

Elseech = sH

End
If

'Dessine le rectangle centré sur mon picturebox
Dim g
As Graphics = Pic.CreateGraphicsg.Clear(Color.AntiqueWhite)

g.TranslateTransform(((eW - (W * ech)) / 2), (eH - (H * ech)) / 2)

g.DrawRectangle(Pens.Black, 0, 0, W * ech, H * ech)

g.Dispose()

End
Sub

Private
Sub Pic_MouseMove(
ByVal sender
As System.Object,
ByVal e
As System.Windows.Forms.MouseEventArgs)
Handles Pic.MouseMove'Recupe les coordonnées de la souris sur le pictureBox
'Celle-ci ne sont pas correctes, comment puis-je faire
Lb.Text = (e.X * ech).ToString &

"," & (e.Y * ech).ToString

End
SubEnd

ClassD'avance merci pour votre aide,
Alain

1 réponse

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Salut,
Tu t'attends à avoir quel résultat exactement?
Car c'est clair que ce que va te retourner l'event MouseMove, c'est les coordonnées "par rapport à GDI+", soit le point en haut à gauche. Si tu as fait un TranslateTransform pour dessiner sur ta picture box, tu devras donc refaire la conversion...

<hr />
-My Blog-