2010-03-25 6 views
0

J'ai une application WinForm qui a une image affichée dans un PictureBox qui a la fonctionnalité supplémentaire de permettre à un utilisateur de dessiner un rectangle sur l'image en cliquant et en faisant glisser. L'emplacement, la hauteur et la largeur du rectangle sont enregistrés sur le disque.Comment dessiner un rectangle dans l'application WinForm à l'emplacement correct

Lorsque l'image est vue à nouveau, je voudrais automatiquement redessiner ce rectangle dans la même position sur l'image.

Lorsque je le redessine, cependant, la hauteur et la largeur sont correctes, mais l'emplacement est toujours désactivé.

L'emplacement est capturé dans l'événement MouseDown comme si

private void pbSample_MouseDown(object Sender, MouseEventArgs e) 
    { 
     if (SelectMode) 
      { 
      StartLocation.X = e.X; 
      StartLocation.Y = e.Y; 
      //later on these are saved as the location of the rectangle 
      }  

    } 

Et je redessine comme si

public void DrawSelectedArea(Rectangle rect) 
    { 
     Graphics g = this.pbSample.CreateGraphics(); 
     Pen p = new Pen(Brushes.Black); 
     g.DrawRectangle(p, rect); 
    } 

Compte tenu de l'emplacement des MouseEventArgs capturés au cours de l'événement MouseDown comment puis-je calculer l'emplacement correct pour redessiner mon rectangle?

Répondre

0

Les points de clic de la souris que vous capturez sont probablement liés au formulaire plutôt qu'à la zone d'image. Vous devez soit vous assurer que vous capturez les coordonnées correctement ou les compenser.

Pourriez-vous inclure une capture d'écran à titre d'exemple?