Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 18:00

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Hilfe, AutoIt Mittelpunkt von Koordinaten

Discussion on Hilfe, AutoIt Mittelpunkt von Koordinaten within the AutoIt forum part of the Coders Den category.

Closed Thread
 
Old   #1
 
loop88's Avatar
 
elite*gold: 0
Join Date: Dec 2013
Posts: 47
Received Thanks: 9
Question Hilfe, AutoIt Mittelpunkt von Koordinaten

Hallo, wie kann ich den ich den Mittelpunkt von relativen koordinaten ermitteln??


Von:
Code:
$skx1 ;x-oben links
$skx2 ;y-oben links
$sky1 ;x-unten rechts
$sky2 ;y-unten rechts
das sind alles koordinaten auf dem desktop die ein rechteck ergeben und ich möchte immer die genaue mitte haben.

sodass als ergebnis das rauskommt:

Code:
$mx ;x-mitte
$my ;y-mitte
Danke!
loop88 is offline  
Old 02/15/2014, 06:52   #2
 
elite*gold: 0
Join Date: Nov 2013
Posts: 297
Received Thanks: 511
Quote:
Originally Posted by loop88 View Post
Hallo, wie kann ich den ich den Mittelpunkt von relativen koordinaten ermitteln??

Code:
$skx1 ;x-oben links
$skx2 ;y-oben links
$sky1 ;x-unten rechts
$sky2 ;y-unten rechts

sodass als ergebnis das rauskommt:

Code:
$mx ;x-mitte
$my ;y-mitte
Danke!
Von was denn?
Desktop?;@DesktopHeight ..@Desktop..
Fenster?;WinGetPos ()
SoulCr4ck is offline  
Old 02/15/2014, 08:12   #3
 
loop88's Avatar
 
elite*gold: 0
Join Date: Dec 2013
Posts: 47
Received Thanks: 9
Quote:
Originally Posted by SoulCr4ck View Post
Von was denn?
Desktop?;@DesktopHeight ..@Desktop..
Fenster?;WinGetPos ()

Also nochmal ich habe die koordinaten:

Code:
$skx1 ;x-oben links
$skx2 ;y-oben links
$sky1 ;x-unten rechts
$sky2 ;y-unten rechts
das sind alles koordinaten auf dem desktop die ein rechteck ergeben und ich möchte immer die genaue mitte haben.
loop88 is offline  
Old 02/15/2014, 08:29   #4
 
FacePalmMan's Avatar
 
elite*gold: 0
Join Date: Jan 2013
Posts: 426
Received Thanks: 129
ach das ist easy. das ist wie beim durchschnitterrechnen in der schule.
Code:
$mx=$skx1+$skx2/2
$my=$sky1+$sky2/2
FacePalmMan is offline  
Old 02/15/2014, 08:38   #5
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Dann hast du wohl in der Schule nicht aufgepasst!
Multiplikation und Division sind vor Addition und Subtraktion, deshalb fehlen bei dir Klammern um die Summe von $skx1 und $skx2 sowie bei $sky1 und $sky2.
alpines is offline  
Thanks
1 User
Old 02/15/2014, 09:23   #6
 
loop88's Avatar
 
elite*gold: 0
Join Date: Dec 2013
Posts: 47
Received Thanks: 9
Quote:
Originally Posted by FacePalmMan View Post
ach das ist easy. das ist wie beim durchschnitterrechnen in der schule.
Code:
$mx=$skx1+$skx2/2
$my=$sky1+$sky2/2
Das habe ich auch schon versucht aber das ist nicht die mitte. also weiß ich auch nicht weiter deswegen frage ich ya.

Quote:
Originally Posted by alpines View Post
Dann hast du wohl in der Schule nicht aufgepasst!
Multiplikation und Division sind vor Addition und Subtraktion, deshalb fehlen bei dir Klammern um die Summe von $skx1 und $skx2 sowie bei $sky1 und $sky2.

Die summen fehlen weil das keine feste koordinaten sind d ie ändert sich ja ständig
loop88 is offline  
Old 02/15/2014, 09:36   #7
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Wo ist das Problem? Du kriegst doch die Koordinaten, dann änder den Mittelpunkt auch immer AdlibRegister eine Funktion die alle 200ms den $mx und $my settet und fertig.
alpines is offline  
Old 02/15/2014, 09:50   #8
 
loop88's Avatar
 
elite*gold: 0
Join Date: Dec 2013
Posts: 47
Received Thanks: 9
Quote:
Originally Posted by alpines View Post
Wo ist das Problem? Du kriegst doch die Koordinaten, dann änder den Mittelpunkt auch immer AdlibRegister eine Funktion die alle 200ms den $mx und $my settet und fertig.

das ist nicht das problem, das ergebnis $mx $my sind rechts außen vom dem rechteck und ich verstehe nicht warum.

Grafische darstellung von dem problem:

loop88 is offline  
Old 02/15/2014, 10:38   #9
 
FacePalmMan's Avatar
 
elite*gold: 0
Join Date: Jan 2013
Posts: 426
Received Thanks: 129
ein script wäre mal ganz nett, damit wir den fehler auch finden können.
FacePalmMan is offline  
Old 02/15/2014, 11:29   #10
 
loop88's Avatar
 
elite*gold: 0
Join Date: Dec 2013
Posts: 47
Received Thanks: 9
Smile

Quote:
Originally Posted by FacePalmMan View Post
ein script wäre mal ganz nett, damit wir den fehler auch finden können.


So habe alles entfernt was nichts damit zu tun hat:


Code:
; Script Start - Add your code below here
#RequireAdmin

#include<Misc.au3>
#include <windowsconstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <ImageSearch.au3>
#include <MsgBoxConstants.au3>
#include <ComboConstants.au3>

; HOTKEYS_____________________
HotKeySet("{ESC}","Salir")
HotKeySet("{t}", "test")

While 1
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("test", 323, 353, 265, 128)
$Button1 = GUICtrlCreateButton("Rechteck auswellen", 21, 106, 137, 25);rechteck auswellen
;[...]
$Button3 = GUICtrlCreateButton("Speichern", 8, 319, 137, 25);speichern
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
	  Case $GUI_EVENT_CLOSE
			Exit
	  Case $Button1 ;cordenadas de pantalla
		 GUISetState(@SW_HIDE, $Form1_1)
		 Local $cord= Select_rectangle()
		 $CorMap1_x1=$cord[0]
		 $CorMap1_y1=$cord[1]
		 $CorMap1_x2=$cord[2]
		 $CorMap1_y2=$cord[3]
		 GUISetState(@SW_show, $Form1_1)
		 ;[...]
	 Case $Button3; escribir INI

		 IniWrite( @ScriptDir &"\Settings.ini" , "area_alto" , "x" , $CorMap1_x1)
		 IniWrite( @ScriptDir &"\Settings.ini" , "area_alto" , "y" , $CorMap1_y1)
		 IniWrite( @ScriptDir &"\Settings.ini" , "area_bajo" , "x" , $CorMap1_x2)
		 IniWrite( @ScriptDir &"\Settings.ini" , "area_bajo" , "y" , $CorMap1_y2)
	EndSwitch
WEnd

WEnd

;[...]

Func test()

$CorMap1_x1=int(IniRead( @ScriptDir &"\Settings.ini" , "area_alto" , "x" ,0));x-oben links
$CorMap1_y1=int(IniRead( @ScriptDir &"\Settings.ini" , "area_alto" , "y" ,0));y-oben link
$CorMap1_x2=int(IniRead( @ScriptDir &"\Settings.ini" , "area_bajo" , "x" ,0));x-unten rechts
$CorMap1_y2=int(IniRead( @ScriptDir &"\Settings.ini" , "area_bajo" , "y" ,0));y-unten rechts

$mx=$CorMap1_x1+$CorMap1_x2/2
$my=$CorMap1_y1+$CorMap1_y2/2

MouseMove($mx, $my,0)
EndFunc


Func Select_rectangle()
Local $Selected=0
Local $Coordinate[4]
$area = GUICreate("", 1, 1, 1, 1, $WS_POPUP, $WS_EX_TOPMOST)
GUISetBkColor(0x33FF00, $area)
WinSetTrans($area, "", 80)
GUISetState()
While $Selected = 0
    If _IsPressed("1") Then
        $mp = MouseGetPos()
        WinMove($area, "", $mp[0], $mp[1], 1, 1)

        While _IsPressed('01')
            $pos = MouseGetPos()
            global $lefts = Order($mp[0], $pos[0])
            global $tops = Order($mp[1], $pos[1])
            WinMove($area, "", $lefts[0], $tops[0], $lefts[1], $tops[1])
            ConsoleWrite($lefts[0] & ', ' & $tops[0] & ', ' & $lefts[1] & ', ' & $tops[1] & @CRLF)
        WEnd

        $Coordinate[0]=$lefts[0]
        $Coordinate[1]=$tops[0]
        $Coordinate[2]=$lefts[0]+$lefts[1]
        $Coordinate[3]=$tops[0]+ $tops[1]
        $Selected=1
     EndIf
  Wend
Guidelete($area)
return $coordinate
EndFunc

Func Order($a, $b)
    Dim $res[2]
    If $a < $b Then
        $res[0] = $a
        $res[1] = $b - $a
    Else
        $res[0] = $b
        $res[1] = $a - $b
    EndIf
    Return $res
EndFunc


Func Salir() ;Salir del programa
    exit 0
EndFunc
loop88 is offline  
Old 02/15/2014, 17:57   #11
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
sollte doch recht einfach so aussehen?:


verstehe nichtso ganz, wie die andere formel da oben zu stande gekommen sein soll o0
lolkop is offline  
Old 12/20/2015, 13:08   #12
 
elite*gold: 585
Join Date: Jul 2011
Posts: 268
Received Thanks: 104
Orden de evaluación

Quote:
Originally Posted by loop88 View Post
Code:
$mx=$CorMap1_x1+$CorMap1_x2/2
$my=$CorMap1_y1+$CorMap1_y2/2
Wenn das der betreffende Teil ist, dann wohl eher mal hiermit versuchen:

Code:
$mx=($CorMap1_x1+$CorMap1_x2)/2
$my=($CorMap1_y1+$CorMap1_y2)/2
La expresion en los paréntesis es que alpines se refirió como 'Summe'.
0ptimist is offline  
Old 12/20/2015, 14:46   #13
 
loop88's Avatar
 
elite*gold: 0
Join Date: Dec 2013
Posts: 47
Received Thanks: 9
Wink lol

Quote:
Originally Posted by 0ptimist View Post
Wenn das der betreffende Teil ist, dann wohl eher mal hiermit versuchen:

Code:
$mx=($CorMap1_x1+$CorMap1_x2)/2
$my=($CorMap1_y1+$CorMap1_y2)/2
La expresion en los paréntesis es que alpines se refirió como 'Summe'.
Danke aber das tema ist über ein jahr alt
Das war glaube ich damals auch die lösung zum problem ^^

Edit:

tema bitte schliessen!
loop88 is offline  
Closed Thread


Similar Threads Similar Threads
[autoIT]Problem mit koordinaten
08/08/2010 - AutoIt - 2 Replies
Moin, ich habe folgendes Problem: Wenn ich die Koordinaten aus einen Bild die Koordinaten erlese und sie dann im GUI anzeige, klappt alles wunderbar. Mein Problem besteht aber darin das ich die Koordinaten , die im GUI angezeigt werden, multiplizieren mit 10 möchte. Nach allen möglichen Versuchen hat es denoch nicht geklappt. (Google war keine große Hilfe) Ich würde mich freuen wenn ihr mir weiter helfen könntet. Hier mein code: #include <GUIConstantsEx.au3> #include...
[AutoIT] Koordinaten anzeigen
08/06/2010 - AutoIt - 13 Replies
Hi, ich will das beim meinen 2 labels X und Y die Koordinaten angezeigt werden wo ich mich grade im spiel befinde. Wie geht das? Mfg
(nicht) absolute Koordinaten in Autoit
08/14/2009 - AutoIt - 3 Replies
Hallo, ich wollte fragen, ob es einen Befehl dafür gibt, dass ich bei Autoit die Koordinaten in einem Fenster angebe?(dass sich die koordinaten auf ein Bestimmtes Fenster beziehen) d.h. dass mit diesem befehl die koordinaten 1/1 immer oben links im fenster ist. Egla wo sich das Fenster auf dem Desktop befindet. habe schon google gefragt aber nix gefunden. Zudem wollte ich wissen ob ich mit dem "Window Info" von Autoit diese Koordinaten irgendwie auslesen kann...die Koordinaten unter der...
AutoIT Koordinaten
05/27/2008 - Guild Wars - 6 Replies
Hallo, ich wollte wissen, ob ich die Koordinaten auf eine kleine Auflösung herunter rechnen kann, ohne sie neu zu messen? Von 1280x1024 auf 1024x768 Die 1280x1024 sind jeweils 100%x100% und die 1024x768 müssten 80%x75% sein.



All times are GMT +2. The time now is 18:00.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.