Coordonnée X,Y après un translatetransform

Résolu
alainh2401 Messages postés 7 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 2 juillet 2008 - 25 nov. 2007 à 17:15
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 26 nov. 2007 à 08:45
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

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
26 nov. 2007 à 08:45
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-
3
Rejoignez-nous