Problem beim festlegen der max. e.location x & y einer Picturebox.

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Regular_vb_user.

    Problem beim festlegen der max. e.location x & y einer Picturebox.

    Hey liebe Com;)

    Ich habe ein Problem bei meinem derzeitigen projekt, bei dem ich bei einem Bild (mit Hilfe der Picturebox) die e.Location.x & e.Location.y herrauslesen möchte.
    Bis hier habe ich keine schwierigkeiten (siehe pic)

    Quellcode

    1. Private Sub picturebox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picturebox1.MouseMove
    2. Label1.Text = "Koordinaten: X: " & e.Location.X & " Y: " & e.Location.Y
    3. End Sub


    Mein Problem ist es, dass es sich um ein verkleinertes bild handelt welchem ich feste max. x & y locations festlegen möchte.

    bsp.: Größe der Picturebox = 600 x 500 -> bildgröße zb. 1300 x 2000 -> ich möchte den höchstmöglichsten wert der x = 200 und y = 300 ...

    So in etwa sollte es dann funktionieren: verkleinertes bild in picturebox mit mousemove die locations abfragen + max. locations selber bestimmen.

    Ich hoffe ich habe es so formuliert damit ihr mir helfen könnt.

    Mfg Regular_vb_user
    Du musst einfach deine Mauskoordinaten jeweils mit dem Verhältnis der Größen deines Bildes zur PictureBox multiplizieren:

    VB.NET-Quellcode

    1. Private Sub picturebox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
    2. Label1.Text = "Koordinaten: X: " & Math.Round(e.Location.X * (PictureBox1.Image.Width / PictureBox1.Width)).ToString & " Y: " & Math.Round(e.Location.Y * (PictureBox1.Image.Height / PictureBox1.Height)).ToString
    3. End Sub


    Edit:
    Hab deien Frage nicht richtig gelesen... die maximalen Werte wären im obigen Beispiel die Abmessungen des Bildes, du kannst analog auch andere Werte verwenden:

    VB.NET-Quellcode

    1. Dim maxX As Integer = 300
    2. Dim maxY As Integer = 200
    3. Private Sub picturebox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
    4. Label1.Text = "Koordinaten: X: " & Math.Ceiling(e.Location.X * (maxX / PictureBox1.Width)).ToString & " Y: " & Math.Ceiling(e.Location.Y * (maxY / PictureBox1.Height)).ToString
    5. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kai Weigelt“ ()