Gewusst wie: abrufen von zoom-Faktor und einer WinForms PictureBox?

Ich brauche die genaue position meines Mauszeigers über ein PictureBox-Steuerelement.

Ich benutze das MouseMove-Ereignis der PictureBox.

Auf dieser PictureBox, ich nutze die "zoom" - Eigenschaft, um ein Bild anzeigen.

Was ist die richtige Art und Weise für immer die position der Maus auf dem original (ungezoomten) Bild?

Gibt es eine Möglichkeit zu finden, den Skalierungsfaktor und verwenden Sie es?

Denk ich benutzen müssen, um imageOriginalSize/imageShowedSize zum abrufen dieser Skalierungsfaktor.

Verwende ich diese Funktion:

float scaleFactorX = mypic.ClientSize.Width / mypic.Image.Size.Width;
float scaleFactorY = mypic.ClientSize.Height / mypic.Image.Size.Height;

Möglich ist, verwenden Sie diesen Wert, um die korrekte position des Cursors über dem Bild?

  • Ich nehme an, Sie können versuchen: Punkt cursorPosition = Goldfisch.PointToClient(Cursor.Position); Punkt positionOverImage = new Point(cursorPosition.X / scaleFactorX, cursorPosition.Y / scaleFactorY);. Aber ich nehme an, da kann es einige Probleme mit der Genauigkeit beim zählen Sie die Zoom-Faktor mit Hilfe dieser Methode. Ich würde vorschlagen, Sie skalieren das Bild auf Ihrem eigenen.
  • danke,aber funktioniert nicht.position ist falsch,bekomme ich den selben Wert bei Verwendung von pointtoclient und eventmouseargs position.
  • Poste bitte den code-snippet, das die Berechnung der Koordinaten, die Sie derzeit verwenden.
  • Rechteck sourceRec = new Rectangle((int)(e.X / currentScale), (int)(e.Y / currentScale), 1, 1);
  • Wenn Sie sagen, müssen Sie Ihre Maus-Koordinaten mit Bezug auf den ungedehnten Bild, was ist ein Anker erwarten Sie von Ihrem ungedehnten Bild zu haben? Ist es verankert an der Spitze der linken? Verankert in der Mitte?
  • Eine richtige Konvertierung Bedürfnisse zu achten, um das Feld' SizeMode-Eigenschaft. Der code, den Sie verwenden, ist jetzt nur die richtige für die Strecke, eine ungewöhnliche Wahl.

InformationsquelleAutor devilkkw | 2012-05-06
Schreibe einen Kommentar