Position ungenau

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

    Position ungenau

    Hallo,
    Ich kann einen Button mit dem Mauszeiger bewgen und wo anders absetzen. Wie kann ich mir eine ungenaue Position anzeigen lassen? Also wenn die Location meines Buttons 0,0 ist soll mir eine MsgBox angezeigt werden aber auch bei 0,1 - 2,2 usw, bis zu einer abweichung von 5 px. Also bei 5,5 soll mir die MsgBox noch angezeigt werden ist die Location aber 6,5 dann nicht?
    Ich komme nicht weiter. Kann mir jemand helfen?
    C# Developer
    Learning C++
    Option Strict On.
    Addieren und subtrahieren kannste nur Sizes, keine Points.
    Aber Du kannst einen Point pere CType() in ein Size konvertieren.
    Die Member können negativ sein!

    VB.NET-Quellcode

    1. Dim sz As Size = New Size(1, 2) - New Size(4, 5)
    2. Dim pt As Point = Button1.Location
    3. sz += CType(pt, Size)
    Nun rechnest Du Dir Deine Differenzen aus und wertest das Ergebnis aus.
    Fertich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Oder so....

    VB.NET-Quellcode

    1. Dim rectangle As New Rectangle(10, 10, 50, 50)
    2. Private Sub tabKalender_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tabKalender.Click
    3. If rectangle.Contains(tabKalender.PointToClient(MousePosition)) Then
    4. MsgBox("is drin")
    5. End If
    6. End Sub
    @RodFromGermany
    Er meldet das Sz nicht deklariert wurde obwohl du doch oben geschrieben hast?

    VB.NET-Quellcode

    1. Dim sz As Size = New Size(1, 2) - New Size(4, 5)


    @FloFuchs
    Bei dir zeigt er mal "is drin" an mal nicht egal an welcher position sich der button oder whatever befindet.

    Die MsgBox darf ja nur wie oben genannt angezeigt werden wenn er eine Location =< 5,5 hat.
    C# Developer
    Learning C++
    Na dann nimm ich mal meine Methode:

    VB.NET-Quellcode

    1. If Math.Abs(MauszeigerX - SollPositionX) <= 5 AndAlso Math.Abs(MauszeigerY - SollPositionY) <= 5 Then
    2. End If


    Von wo Du jetzt MauszeigerX, Y und SollPositionX, Y ist eine andere Sache.
    Sind es Bildschirmkoordinaten, oder Koordinaten auf der Form, oder...
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Hallo??????????
    Das musste schon noch an dein Problem genau anpassen....
    Oder soll ich das etwa machen? Das is ne Möglichkeit es zu lösen. Statt der mouseposition fragste halt deine Button.location ab, und das Rechteck musste halt nich da hin malen wo ich es hin hab, sondern da wo du et brauchst.
    Und Statt is drin kannste ja auch keine ahnung iwas anderes machen lassen.

    Rikudo schrieb:

    Er meldet das Sz nicht deklariert wurde
    In was für einer Klasse steht denn das bei Dir?
    Bilder
    • size.jpg

      19,07 kB, 430×155, 72 mal angesehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Niko Ortner schrieb:

    Na dann nimm ich mal meine Methode:

    VB.NET-Quellcode

    1. If Math.Abs(MauszeigerX - SollPositionX) <= 5 AndAlso Math.Abs(MauszeigerY - SollPositionY) <= 5 Then
    2. End If


    Von wo Du jetzt MauszeigerX, Y und SollPositionX, Y ist eine andere Sache.
    Sind es Bildschirmkoordinaten, oder Koordinaten auf der Form, oder...
    Es soll sich um die Formkoorsinaten handeln. Also oben links in der Form ist die Koordinate 0,0

    RodFromGermany schrieb:

    Rikudo schrieb:

    Er meldet das Sz nicht deklariert wurde
    In was für einer Klasse steht denn das bei Dir?
    Ähm, wie seh ich das? Bei mir ist das ein ganze normale Class:

    VB.NET-Quellcode

    1. Public Class Form1
    2. End Class
    C# Developer
    Learning C++

    Rikudo schrieb:

    Bei mir ist das ein ganze normale Class:
    Poste mal die gesamte Prozedur, in der der Fehler auftritt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Rikudo:
    Formkoorsinaten

    Dann ist es einfach:
    Mauszeiger X und Y bekommst Du aus e.X und e.Y des MouseEventArgs der MouseMove Methode.

    Was SollPositionX und Y sein soll musst natürlich Du selbst wissen.


    Aber lass RodFromGermany bitte nicht links liegen ^^
    Mich interessiert auch, warum es nicht funktionieren soll.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils