2010-11-26 44 views
1

J'ai créé un programme qui mesure les distances à partir de deux blocs d'image placés par l'utilisateur. Pour l'instant, tout fonctionne bien sauf, où je veux que les points pour aller les images ne vont pas dans cet endroit où j'ai cliqué. Ceci est mon code actuel en cas Mouseclick du picturebox les deux points (PictureBoxes) doivent être placés et mesure:Création d'une boîte à images sur l'emplacement de la souris lorsque l'utilisateur a cliqué sur Moused en C#

if (Dotter == 1) 
     { 
      dot1.Visible = true; 
      dot1.Location = e.Location; 
      Dotter = 2; 
     } 
     else if (Dotter == 2) 
     { 
      dot2.Visible = true; 
      dot2.Location = e.Location; 
      Dotter = 1; 
     } 

Ceci est la fonction de mise réelle pour les deux PictureBoxes au moment, s'il vous plaît aider.

Merci

Extra Info:

Il est dans le picturebox où l'image qui peut être mesurée à l'aide de ces deux points, et dans son événement mouseclick, et son sur un formulaire Windows. Aussi quand je clique ils sont placés mais sont miles loin d'où j'ai cliqué, et parfois même apparaissent en dehors de la zone d'image quand ils ne devraient pas être.

+0

Pouvez-vous partager plus de code? Plus spécifiquement, le gestionnaire d'événements dans lequel réside le code ci-dessus. De plus, sur quel contrôle clique-tu? La forme? Ou un autre 'PictureBox'? – BeemerGuy

+0

S'agit-il d'une application Windows Forms? Si c'est le cas, je crois que la propriété 'location' détermine le coin supérieur gauche de la zone d'image. Cela pourrait affecter le comportement. –

+1

une autre question: quand vous dites "ils ne vont pas où j'ai cliqué" vous voulez dire qu'ils vont ailleurs? Ou ne va nulle part? – BeemerGuy

Répondre

0

Merci pour votre aide c'est ce que j'ai fait pour le faire fonctionner. J'ai changé la partie e.Location de mon code à ceci:

si (Dotter == 1) { dot1.Visible = true; dot1.Left = e.Location.X + capturebox.Left - 10; dot1.Top = e.Location.Y + capturebox.Top - 10; Dotter = 2; } sinon if (Dotter == 2) { point2.Visible = true; dot2.Left = e.Location.X + capturebox.Left - 10; dot2.Top = e.Location.Y + capturebox.Top - 10; Dotter = 1; Donc, en changeant fondamentalement les emplacements des points à Gauche et Haut, puis en obtenant l'emplacement de clic de souris pour x et y, puis fait le point où le point apparaîtra au milieu en moins 10 de chaque .