Pixel zahl aufgrund mauswegeung übernehmen

  • Guten Tag,

    ich bin immernoch am rumspielen und testen.
    Wenn ich nunzb ein Bild habe.
    Dieses Füge ich im GUI mit ein, nun würde ich zb sagen Obenrechts ist 100 unten Links ist 0 oben links ist 0 und unten rechts ist auch 100.

    Nun will ich hier zb mit der mausbewegung und einem Klick diese daten zb dann 50 50 übergeben um es auszuwerten.
    Dies währe interesant an einer Auswertung ob im Bild ein Fehler ist.
    Man würde genau die koordinaten haben und in einer 2t Anwendung dies Anzeigen lassen, zb an einem Entfernten PC da er ja nur die Koordinaten eingeben muss und somit die Grafik nicht nochmals nach dem Fehler durchsuchen.

    Gruß
    Ev hat jemand eine Idee für mich

    Einmal editiert, zuletzt von DummDumm (3. Juli 2009 um 16:10)

  • die koordinaten der maus kannst du auslesen ..

    die plazierung des gui auch ...

    die größe des gui auch ..

    und die größe des bildes .. ist ja klar ..

    der rest ist ne große rechenaufgabe ..

    viel spaß

  • Hmm okay damit komme ich keinen SChritt weiter
    Sorry.

    Aber das bild soll ja Feste Kooridnaten bekommen
    und unabhängig von der Gui größe sein.

    Okay ich könnte mit CreatGUI eines rein mit dem Bild aufmachen. Das ist ne idee okay.
    Und somit immer ne Maximalgröße des Bildes Vorgeben. In dem ich es in den Gui fite.

    Aber dennoch fehlt mir nen ANhaltspunkt wie ich das Auslesen der Bild Koordinaten anhand einer selber defenierten Y und X Achse mache.

  • Schau mal die Befehle WinGetPos(), MouseGetPos und dazu die Optionen PixelCoordMode und MouseCoordMode an.
    Daraus kannst Du Dir dann die Mausposition relativ zum aktuellen Fenster ausgeben lassen, und da Dein Bild in der GUI ja immer an der gleichen Stelle platziert werden soll, kannst Du mit einem statischen Offset die Bildpixelposition bestimmen

  • danke das bringt mich etwas weiter, ich werde damit mal rumspielen und ggf nochmals hier nachfragen

  • Nun habe ich schon eine frage wenn ich das so nutze zeigt es mir ja die Koords an wo ich klicke:

    [autoit]


    #include <Misc.au3>

    [/autoit][autoit][/autoit][autoit]

    While 1
    If _IsPressed("01") Then
    While _IsPressed("01")
    sleep(10)
    WEnd
    _pos()
    EndIf
    sleep(50)
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Opt("MouseCoordMode", 2)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    func _pos ()

    [/autoit][autoit][/autoit][autoit]

    $pos = MouseGetPos()
    MsgBox(0, "Maus x,y:", $pos[0] & "," & $pos[1])

    [/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit]

    kann ich nun aber ggf noch selber defenieren wie ich dsa Koordinaten system aufgebaut haben will.
    Ich fand bei MouseCordMod das man diese zwar relativ zum Fenster nutzen kann
    was aber für meine Anwendung noch interesant währe, das ich diese Punkte Sprich XY achse selber bestimmen kann.
    Oder muss ich dies über die Fenster größe dann machen?

    Nur wenn ich dann im Maßstab arbeite und es größer mache, somit müsst eich dann die XY achse im bereich der Vergrößung verändern. Dies würde ja dann über die Fenstergröße nicht gehen leider.

  • du kannst die koordinaten durch einen beliebigen wert teilen .. oder multiplizieren .. und könntest somit deine "eigene" auflösung bekommen ..

    z.B.
    desktop 1680 * 1050

    gui aber nur 800*600

    gewünschte auflösung 100 teiler auf 800

    800/100 = 8 pixel pro teiler ..

    dein gui passt 2,1 mal in dein desctop ..

    also würde ich jetzt mal sagen ..

    $X_pos = ($mauswert_breit/2.1)/8

    .. oder verstehe ich dich jetzt falsch ?!

  • Ich glaub ich steh am schlauch

    Ganz einfach mal meine Vorstellung

    Ich habe ein Bild in einem GUI
    Das gui ist sagen wir 300x200
    Dort habe ich ein Bild drinnen das natürlich dort verkleinert ist

    Bei diesem Bild soll oben links der wert wenn ich mit der maus klicke zb 1,1 sein und oben rechts dann 1000 , 1
    Unten links 1,1250 und rechts unten 1000 zu 1250.

    Scala natürlich nun rein zufällig .
    Diesen Gui bleibt gleich und soll immer die selbe X und Y achse haben.

    Natürlich könnte ihc das GUI so groß wie das bild machen. Aber das nicht der Sinn.
    Daher meine Frage ob ich bei einem GUI bestimmen kann wie die XY achse beim auslesen des Mausclicks ist.

    Also mir geht ja eigentlich nicht um die Tatsächliche Mausposition, sondern eher um eine Flexlibe XY achse zur bestimmung.

    Spoiler anzeigen
    [autoit]

    #include <Misc.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 200, 250, 200, 200)
    $Pic1 = GUICtrlCreatePic("", 200, 250, 100, 100, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed("01") Then
    While _IsPressed("01")
    sleep(10)
    WEnd
    _pos()
    EndIf
    sleep(50)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Opt("MouseCoordMode", 2)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    func _pos ()

    [/autoit] [autoit][/autoit] [autoit]

    $pos = MouseGetPos()
    MsgBox(0, "Maus x,y:", $pos[0] & "," & $pos[1])

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit]

    Hier zb hätte ich in keiner Position 1,1 oder 0,0 als Koordinaten

    Nachtrag::::

    Ich habe mir es nun mal errechnet.
    Ich habe zb orginal bild 1000x1250
    dann habe ich nen GUI 200x250

    dann diese Rechnung aber ist falsch
    pos = MouseGetPos()
    $a = $pos[0]/4
    $b = $pos[1]/5
    $x = $b / 0.20
    $y = $a / 0.20
    MsgBox(0, "Maus x,y:", $x & "," & $y)

    Hier sollte er mir ja bei nem klick oben rechts 1, 1000 anzeigen und unten recht 1250x1000

    aebr ich bekomme völlig falsche werte

    2 Mal editiert, zuletzt von DummDumm (2. Juli 2009 um 20:53)

  • Spoiler anzeigen
    [autoit]


    Ich habe zb orginal bild 1000x1250
    dann habe ich nen GUI 200x250

    [/autoit] [autoit][/autoit] [autoit]

    pos = MouseGetPos()
    $a = $pos[0]/4
    $b = $pos[1]/5
    $x = $b / 0.20
    $y = $a / 0.20
    MsgBox(0, "Maus x,y:", $x & "," & $y)

    [/autoit]


    also ich denke da ist ein Denkfehler drin, oder ich verstehe Dein Problem nicht;

    also ich würde es so machen
    pos = MouseGetPos()
    $a = $pos[0] ; xcoord im Gui
    $b = $pos[1] ; ycoord im Gui

    $faktor_x = $bild_x/$gui_x ; bei Dir 1000/200
    $faktor_y = $bild_y/$gui_y ; bei Dir 1250/250

    $x = $a * $faktor_x ; xcoord im Bild
    $y = $b * $faktor_y ; ycoord im Bild

    MsgBox(0, "Maus x,y:", $x & "," & $y)

    (ich habs nicht getestet, wenn der Koordinatenursprung nicht unten/links ist musst Du halt umrechnen)

  • ja damit hast du die lösung ich habe einfahc zu kompliziert gedacht
    sorry

    aber noch mehr dankeschöän