ist das z.b bei mir rechts oben im Bildschirm ( nur als Beispiel hab jetzt iwelche Werte genommen ). Wird dies dann auch rechts oben auf einem anderen Bildschirm sein ?
Ich habe ein 15zoll Notebook mit ner Auflösung von 1680x1050, wenn ich dann auf einem Bildschirm der angenommen 19zoll hat dann andere Werte eingegeben haben damit die Pixelposition / Mausposition auch oben rechts ist ?
Hoffe ihr checkt was ich meine.
Falls ja kann ich ja als Coder kaum Wissen was für einen Bildschirm der User hat was kann ich machen damit diese Funktion auf jedem Rechner funktioniert ?
Gibt es eine Art tabelle dafür ? Fragen über fragen.
Ok helfen tut es aufjedenfall muss jetzt nur noch gucken wie das genau funktioniert, also wie ich das verhältniss bestimmen kann, von wegen welche x,y position ist bei mir die mitte und welche x,y beim bildschirm von anderem.
Also atm schwirrt mir das so im Kopf vor, z.b liegt mein Punkt bei x = 500, und ich weiß du durch die Schleife da oben ich max. x = 1050 habe und max. x/2 = 525 ist. Also müsste ich das Verhältniss zwischen max. x und x ausrechnen und danach das Verhätlniss zwischen x und max. x/2. Sagen wir einfach mal das da v1 = 3 und v2 = 4 rauskommt.
Wenn ich das Programm also auf einem anderen Bildschirm laufen lasse lese ich wieder max. x und max. x/2 aus und müsste also einen Punkt finden der dem Verhältnissen v1 und v2 von oben entsprechen.
Liege ich da richtig ? Ansonsten habe ich keine Idee wie ich das machen soll...mein Mathehirn ist grad iwie tot.
Sagen wir ich will den Punkt (235 / 642 ) anspringen, bei meiner Auflösung von 1680x1050 rechne ich also Xs = Breite/ 2 und Ys Höhe /2.
Danach (235/840)*Xs. Also bei mir (235/840)*840 = 235. Für Koordinate X, für Y: (642/525)*525=642.
Wenn ich dann wieder die Koordinaten erreichen will aber diesmal auf einem 1024x768 Bildschirm müsste ich rechnen: (235/840)*Xs, hier ist diesmal Xs = 512 also (235/840)*512 = ca. 143. Für y:
(642/525)*384= ca. 469.
Das heißt mein Punkt P1 ( 235/642) entspricht auf einem Bildschirm mit einer Auflösung von 1024x768 ca. P2 (143/469).
Problem ist wieder folgendes...das Fenster bzw. den Knopf den ich anspringen will verändert auch noch dazu seine Position was aber nicht wirklich dem Entspricht was ich da ausgerechnet habe...
Sagen wir ich will den Punkt (235 / 642 ) anspringen, bei meiner Auflösung von 1680x1050 rechne ich also Xs = Breite/ 2 und Ys Höhe /2.
Danach (235/840)*Xs. Also bei mir (235/840)*840 = 235. Für Koordinate X, für Y: (642/525)*525=642.
Wenn ich dann wieder die Koordinaten erreichen will aber diesmal auf einem 1024x768 Bildschirm müsste ich rechnen: (235/840)*Xs, hier ist diesmal Xs = 512 also (235/840)*512 = ca. 143. Für y:
(642/525)*384= ca. 469.
Ich weiss zwar nicht warum Du vorab die halbe Bildschirmbreite und -höhe berechnest aber prinzipiell stimmt die Rechnung. Wenn die Bedienung über einen Robot unbedingt notwendig ist würde ich mir die relative Position des Punktes im Code speichern (in den Bsp ~0,1399 und ~0,6114) und dann diese mit der aktuellen Auflösung multiplizieren.
Problem ist wieder folgendes...das Fenster bzw. den Knopf den ich anspringen will verändert auch noch dazu seine Position was aber nicht wirklich dem Entspricht was ich da ausgerechnet habe...
Wenn dahinter keine gesetzmäßigkeit steckt bzw. das Verhalten nicht voraussagbar ist, hast Du schlechte Karten. Ansonsten könnte man sich für verschiedene Auflösungen die relevanten Positionen in Properties, Preferences oder ... speichern.
Im Extremfall könnte man noch über einen optischen Vergleich nach dem Button suchen ;-)
Ok, jo bin atm dabei um zu schaun ob da ne gleichmässigkeit drinne Steckt in der Skalierung der Knöpfe von dem Programm. Falls nicht muss ich mal schau wie "nah" ich mit meiner Rechnung zu ihnen komme und den restlichen Weg muss ich dann halt eine Pixelabfrage mache ob ich den Roten Knopf erreicht habe.
Im schlimmsten Fall kann ich einfach schaun wieviel Auflösungen ich hier selber Probieren kann, die Positionen der verschiedenen Auflösungen halt speichern wie du meintest und diese dann durch ne Simple If abfrage setzen lassen falls der User so eine Auflösung hat.