AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

screen resolution koordinaten konvertieren?

Ein Thema von rhodan · begonnen am 11. Jun 2012 · letzter Beitrag vom 11. Jun 2012
Antwort Antwort
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#1

screen resolution koordinaten konvertieren?

  Alt 11. Jun 2012, 01:09
Hallo!

Bin mir nicht sicher ob die Threadecke hier richtig ist, im zweifelsfall bitte moven und sorry..

Nun zu meiner Frage..

Mir liegt ein code vor, aufgezeichnet von einem Maus-Rekorder. In dem code sind X und Y koordinaten angegeben, auf die geklickt wird. das script setzt aber eine auflösung von 1920x1080 voraus.

mein bildschirm unterstützt diese allerdings nicht. ich möchte ein tool schreiben was die koordinaten aus der 1920x1080 auflösung für sagen wir...1024x768 umrechnet.

wenn der mausklick also in der auflösung 1920x1080 auf position..sagen wir 400x500 erfolgt, wo müsste er dann in einer anderen auflösung erfolgen um das gleiche ergebniss zu erzielen...hoffe es ist verständlich
vielleicht gibts ja so ein tool schon..ich finds nützlich.

danke für nen tip wie ich sowas realisieren kann.
möchte also als erstes die ausgangs-auflösung eintragen in ein feld, dann angeben auf welcher X/Y koordinate ein klick erfolgen würde und diese position dann auf eine andere auflösung umrechnen lassen.

lg robin

Geändert von rhodan (11. Jun 2012 um 01:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#2

AW: screen resolution koordinaten konvertieren?

  Alt 11. Jun 2012, 01:25
Rechne mit Verhältnissen:

Code:
x_alt / breite_alt = x_neu / breite_neu
y_alt / hoehe_alt = y_neu / hoehe_neu
Also etwas konkreter:

Code:
x_alt / 1920 = x_neu / 1024
y_alt / 1080 = y_neu / 768
Mit deinem Beispiel:

Code:
400 / 1920 = x_neu / 1024
500 / 1080 = y_neu / 768
Einfach nach x_neu bzw. y_neu auflösen. Dann ausrechnen und auf ganzen Zahlen (Integer) runden. Ergebnis wäre dann (213|356). Das kriegst du hin, oder?

Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog

Geändert von Valle (11. Jun 2012 um 01:38 Uhr) Grund: Tippfehler!
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#3

AW: screen resolution koordinaten konvertieren?

  Alt 11. Jun 2012, 01:32
hmm...ich kenne mich mehr im grafischenbereich mit delphi aus.

wie bist du auf die zahlen gekommen bzw die neue auflösung? kannst du mir eben den rechenweg beschreiben? den code schaff ich dann

danke!
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#4

AW: screen resolution koordinaten konvertieren?

  Alt 11. Jun 2012, 01:39
ah ich habs...danke dir!
mathe war noch nie meine stärke xD
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#5

AW: screen resolution koordinaten konvertieren?

  Alt 11. Jun 2012, 01:44
Das hat mir Grafik absolut nichts zu tun.

Die Zahlen stammen nur aus deinen Beispielen. Nur bei einer hatte ich einen Tippfehler drin, vielleicht hat dich das verwirrt.

Den neuen Punkt habe ich durch Auflösen der Gleichung bekommen. Du musst das Ganze mit Verhältnissen rechnen. Die X-Koordinate des gegebenen, alten Punktes (400 in deinem Beispiel) steht im Verhältnis zur Breite des alten Auflösung (1920 in deinem Beispiel). Wenn du diese X-Koordinate jetzt umgerechnet hast, sagen wir mal sie lautet jetzt x_neu, dann steht sie immer noch im gleichen Verhältnis zur Breite des Bildschirms. Die neue Breite in deinem Beispiel war 1024. Die Verhältnisse sind gleich. Das drückt man dann so aus:

Code:
400 / 1920 = x_neu / 1024
(400 durch 1920 ist gleich x-neu durch 1024 ;-) )
Jetzt einfach diese Formel nach x_neu auflösen, um die neue X-Koordinate des Punktes zu bestimmen. Das Gleiche Prinzip gilt dann auch für die Y-Koordinate. Das hat mit Delphi nichts zutun, ist nur Mathematik. Jetzt klar was gemeint ist?

Edit:// Habe meinen Beitrag jetzt trotz "ah ich habs" abgeschickt. Etwas mehr Erklärung kann ja nicht schaden.

Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#6

AW: screen resolution koordinaten konvertieren?

  Alt 11. Jun 2012, 01:45
jap...danke dir!
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#7

AW: screen resolution koordinaten konvertieren?

  Alt 11. Jun 2012, 02:15
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
originalxx :integer;
originalyy :integer;
koordinatexx:integer;
koordinateyy:integer;
zielxx:integer;
zielyy:integer;

begin
originalxx := StrToInt(originalx.text);
originalyy := StrToInt(originaly.text);
koordinatexx := StrToInt(koordinatex.text);
koordinateyy := StrToInt(koordinatey.text);
zielxx := StrToInt(zielx.text);
zielyy := StrToInt(ziely.text);

[B]zielkoordinatex.caption := koordinatexx / originalxx * zielxx;[/B]
end;

end.
wie kann ich in dem label "zielkoordinatex.caption" das ergebnis der rechnung anzeigen lassen? InttoStr funktioniert hier nicht :X
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#8

AW: screen resolution koordinaten konvertieren?

  Alt 11. Jun 2012, 02:27
habs jetzt so gelöst..:

Code:
zielkoordinatex.caption := floattostr(StrtoFloat(koordinatex.text) / StrtoFloat(originalx.text) * StrtoFloat(zielx.text));

zielkoordinatey.caption := floattostr(StrtoFloat(koordinatey.text) / StrtoFloat(originaly.text) * StrtoFloat(ziely.text));
allerdings kommen da keine glatten zahlen heraus..wie kann ich das ändern damit ich exakte koordinaten habe?
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#9

AW: screen resolution koordinaten konvertieren?

  Alt 11. Jun 2012, 03:01
Ich kann kein Delphi, aber ich tendiere mal zu Round():

Delphi-Quellcode:
zielkoordinatex.caption := IntToStr(Round(StrToFloat(koordinatex.text) / StrToFloat(originalx.text) * StrToFloat(zielx.text)));
zielkoordinatey.caption := IntToStr(Round(StrToFloat(koordinatey.text) / StrToFloat(originaly.text) * StrToFloat(ziely.text)));
Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog

Geändert von Valle (11. Jun 2012 um 03:02 Uhr) Grund: FloatToStr durch IntToStr ersetzt; macht mehr Sinn
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: screen resolution koordinaten konvertieren?

  Alt 11. Jun 2012, 08:43
Oder nimm div anstatt /.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz