Stadtkarte mit X & Y...

  • Hallo Liebe gemeinde ^^

    Ich hab da so ne Frage ;)

    Man hat z.B. eine Karte , man sieht 10% von der Karte (Also nah rangezoomt)

    [Blockierte Grafik: http://www.celtic-congress-2007.com/img/Bonn_map_RheinischesLandesmuseum.png]

    Und man hat X & Y Werte

    Das die mitte X: 1 Y: 1 ist von der Karte ....und Dort ein Punkt ist z.B

    [Blockierte Grafik: http://www.derpunkt.info/2_PICS/punkt1.gif]

    Ist sowas möglich ? Wenn ja wie... =)

    Edit:* Der Punkt ist dan natürlich kleiner , habe keine klein gefunden ^^


    Ps: Bilder sind frei von Google genommen ;)

    Einmal editiert, zuletzt von tuttifrutti (9. Mai 2009 um 10:32)

  • du müsstest die koordinaten vom gui mithilfe einer formel anpassen... bsp:


    der Punkt soll in der Mitte sein ( $x=1 $y=0)

    [autoit]

    GUICtrlSetPos($punkt, $guibreite/2, $guihoehe/2)

    [/autoit]


    oder


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

    $xkarte=$xgui/2
    $ykarte=$ygui/2

    [/autoit]


    Hoffe ich konnte dir Helfen

  • Hier der Anfang.. wusste nicht was du genau wolltest, deswegen hab ich einfach mal geschrieben dass du den punkt auch bewegen kannst ->

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>

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

    Opt("GuiOnEventMode",1)
    $gui=GuiCreate("Autoit-Mapper", 500,500, -1,-1,$WS_POPUP)
    $map=GuiCtrlCreatePic(@DesktopDir&"\map.gif", 1,1,500,500,-1)
    GuiCtrlSetState(-1,$Gui_Disable)
    $punkt=GuiCtrlCreatePic(@DesktopDir&"\punkt.gif",500/2-15,500/2-15,30,30)
    GuiCtrlSetOnEvent(-1, "_DragIt")
    GuiSetState()

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

    While 1
    sleep(100)
    Wend

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

    Func _DragIt()
    Local $Pos_C, $Pos_M, $Pos_M2, $Opt_old
    Local $dll = DllOpen("user32.dll")
    $Opt_old = Opt('MouseCoordMode', 0)
    $Pos_C = ControlGetPos($gui, "", $punkt)
    $Pos_M = MouseGetPos()
    $y_Offset = $Pos_M[1] - $Pos_C[1]
    $x_Offset = $Pos_M[0] - $Pos_C[0]
    While _IsPressed('01', $dll)
    $Pos_M = MouseGetPos()
    If $Pos_M <> $Pos_M2 Then
    GUICtrlSetPos($punkt,$Pos_M[0] - $x_Offset, $Pos_M[1] - $y_Offset)
    EndIf
    $Pos_M = $Pos_M2
    sleep(50)
    WEnd
    DllClose($dll)
    Opt('MouseCoordMode', $Opt_old)
    EndFunc ;==>_DragIt

    [/autoit]
  • Hey , danke schomer für ne Antwort.
    Der Anfang ist doch gut =) Nur der punkte sollte sich selbst bewegen.
    Wenn z.B. dort so ein Label ist

    [autoit]

    $pointX = GUICtrlCreateLabel("152")

    [/autoit]


    und man Sie dan ausliest

    [autoit]

    GuiCtrlRead( $pointX )

    [/autoit]

    So das die Map in der mitte X: 0 & Y: 0 ist.
    Und das der Punkt dann bei X:152 & Y:0 ist =)

    Würde des gehen ?

    Mit freundlichen Grüßen Tutti Frutti

  • Ich weiß nicht ob ich das richtig verstanden hab...
    willstu die map oder den Punkt bewegen? Oder willstu die map als koordinatensystem benutzen, sodass der punkt bei den koordinaten (50,-50) im 4ten Quadranten ist?

    In beiden Fällen => GuiCtrlSetPos (oder ControlMove)

  • Wenn du das wie bei nem Koordinatensystem machen willst und die Koordinaten X=152/Y=0 sind dann:

    [autoit]

    GuiCtrlSetPos($punkt, <breite der map>/2 + 152, <höhe der map>/2+0)

    [/autoit]
  • GuiCtrlSetPos($punkt, <breite der map>/2 + 152, <höhe der map>/2+0)

    Ja danke ;) Aber üff wohin muss das ?

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>

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

    Opt("GuiOnEventMode",1)
    $gui=GuiCreate("Autoit-Mapper", 500,500, -1,-1,$WS_POPUP)
    $map=GuiCtrlCreatePic(@ScriptDir&"\map.gif", 1,1,500,500,-1)
    GuiCtrlSetState(-1,$Gui_Disable)
    $punkt=GuiCtrlCreatePic(@ScriptDir&"\point.gif",500/2-15,500/2-15,30,30)
    GuiCtrlSetOnEvent(-1, "_DragIt")
    GuiSetState()

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

    While 1
    sleep(100)
    Wend

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

    Func _DragIt()
    Local $Pos_C, $Pos_M, $Pos_M2, $Opt_old
    Local $dll = DllOpen("user32.dll")
    $Opt_old = Opt('MouseCoordMode', 0)
    $Pos_C = ControlGetPos($gui, "", $punkt)
    $Pos_M = MouseGetPos()
    $y_Offset = $Pos_M[1] - $Pos_C[1]
    $x_Offset = $Pos_M[0] - $Pos_C[0]
    While _IsPressed('01', $dll)
    $Pos_M = MouseGetPos()
    If $Pos_M <> $Pos_M2 Then
    GUICtrlSetPos($punkt,$Pos_M[0] - $x_Offset, $Pos_M[1] - $y_Offset)
    EndIf
    $Pos_M = $Pos_M2
    sleep(50)
    WEnd
    DllClose($dll)
    Opt('MouseCoordMode', $Opt_old)
    EndFunc ;==>_DragIt

    [/autoit]


    Das Rote durch

    [autoit]

    GuiCtrlSetPos($punkt, <500>/2 + 152, <500>/2+0)

    [/autoit]
  • Unschön und schnell:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>

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

    Opt("GuiOnEventMode",1)
    $gui=GuiCreate("Autoit-Mapper", 500,500, -1,-1,$WS_POPUP)
    $map=GuiCtrlCreatePic(@ScriptDir&"\map.gif", 1,1,500,500,-1)
    GuiCtrlSetState(-1,$Gui_Disable)
    $punkt=GuiCtrlCreatePic(@ScriptDir&"\punkt.gif",500/2-15,500/2-15,30,30)
    GuiCtrlSetOnEvent(-1, "_DragIt")
    $x_inp=GuiCtrlCreateInput("X",10,10,30,20)
    $y_inp=GuiCtrlCreateInput("Y",45,10,30,20)
    $set_point=GuiCtrlCreateButton("Set Point",10,32,68,20)
    GuiCtrlSetOnEvent(-1,"_setPoint")
    GuiSetState()

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

    While 1
    sleep(100)
    Wend

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

    Func _setpoint()
    GuiCtrlSetPos($punkt, 500/2-15 +GuiCtrlRead($x_inp), 500/2-15 +GuiCtrlRead($y_inp))
    EndFunc

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

    Func _DragIt()
    Local $Pos_C, $Pos_M, $Pos_M2, $Opt_old
    Local $dll = DllOpen("user32.dll")
    $Opt_old = Opt('MouseCoordMode', 0)
    $Pos_C = ControlGetPos($gui, "", $punkt)
    $Pos_M = MouseGetPos()
    $y_Offset = $Pos_M[1] - $Pos_C[1]
    $x_Offset = $Pos_M[0] - $Pos_C[0]
    While _IsPressed('01', $dll)
    $Pos_M = MouseGetPos()
    If $Pos_M <> $Pos_M2 Then
    GUICtrlSetPos($punkt,$Pos_M[0] - $x_Offset, $Pos_M[1] - $y_Offset)
    EndIf
    $Pos_M = $Pos_M2
    sleep(50)
    WEnd
    DllClose($dll)
    Opt('MouseCoordMode', $Opt_old)
    EndFunc ;==>_DragIt

    [/autoit]