Bildschirmauflösung (physikalisch)

HimBromBeere

Top Contributor
Hallo, ich mal wieder

wie kann man in Java die Bildschirmauflösung herausbekommen, damit mein ich nicht die Displaygröße (z.B. 1024*768px), sondern die tatsächliche (physikalische) Auflösung (also in dpi respektive dpcm). Überall, wo man googlelt, findet man nur die Bildschirmgröße, die mich aber nur peripher interessiert...

EDIT: Hintergrund: ich möchte den Maßstab einer Kartengraphik ausgeben, dafür muss ich natrülich wissen, wie viele Pixel mein Kartenausschnitt hat, welche reale Größe dieser Ausschnitt repräsentiert UND, und hier kommt das, was ich bisher noch nicht rausbekommen habe, wie groß ein Pixel ist bzw. wieviele davon auf eine gegebene Länge (z.B. einen Inch oder einen cm) passen... Im Moment steht der Maßstab nämlich in der Art 1px = 100m da, was irgendwie ziemlich beschissen zum Rechnen bzw. messen ist...


Hoffe, ihr könnt mir etwas helfen
 
Zuletzt bearbeitet:

hdi

Top Contributor
Hä, versteh ich nicht. Es kann dir doch egal sein wie groß ein Pixel auf dem Bildschirm ist. Du kannst aus deinem Kartenausschnitt genau x*y Pixel anzeigen, wenn die Auflösung x*y Pixel ist. Und dann passt der genau auf den Bildschirm??

edit:
Im Moment steht der Maßstab nämlich in der Art 1px = 100m
Ja, passt doch. Dann muss doch nur deine interne Logik für einen Pixel, d.h. einen Slot in deinem 2d-Array zB, eben 100m Kartendaten repräsentieren.
 
Zuletzt bearbeitet:

HimBromBeere

Top Contributor
das Ziel ist nicht, ein Rasterbild der Größe (x*y)Px darzustellen (das mommt später, wenn ich mir um Rastergraphiken gedacken mache), sondern einen Vektor der Länge x Meter (welche dann später auch noch durch geograph. Koordinaten á la 12" bzw. 51°48'34"n.Br. 13°38'41" ersetzt werden können... wenn ich mal viel Zeit und Muße hab :D).
Also muss ich wissen, welche Realstrecke durch ein Pixel repräsentiert wird.

EDIT: Selbst für Rastergraphiken geht das nur, solange man nicht in den Subpixelbereich gehen möchte... aber OK, das werd ich auch erstmal nicht tun, schließlich programmier ich keine Profi-Anwendung...
 

Cola_Colin

Top Contributor
Die Größe der Pixel ist wohl eine Eigenschaft das Monitors, ich bezweifle, dass man das mal eben so abfragen kann.
Aber das brauchst du auch gar nicht.

Im Moment steht der Maßstab nämlich in der Art 1px = 100m da, was irgendwie ziemlich beschissen zum Rechnen bzw. messen ist...

Messen ? Wie ? Mit dem Zollstock am Bildschirm ? ;)
Am besten stellst du ein Hilfstool zur Verfügung, mit dem der Nutzer eine Linie ziehen kann, deren Länge dann eben in metern auf der Karte angegeben wird.

Oder, wenn du unbedingt den Zollstock ermöglichen willst, dann zeichne eben eine 10km-Linie (also bei 100m/px z.B. 100px), die der Nutzer dann als Referenz verwenden kann
 

HimBromBeere

Top Contributor
Ich weiß, dass das ´ne Monitor-Angabe ist (ist aber die Bidschirmgröße ja auch, genau wie Farbtiefe u.ä.). Die ist natürlich geräteabhängig, soviel ist mir klar...
 

Cola_Colin

Top Contributor
Auflösung und Farbtiefe ist aber für das ganze System sehr viel wichtiger als die Pixelgröße. Was der Monitor dann mit den Daten macht interessiert den Computer nicht mehr.
btw müsste dein Programm dann auch darauf reagieren können, wenn ich das Fenster von meinem 19" 1280*1024 auf meinen 17" 1280*1024 schiebe, da sind die Pixel ja wohl kaum gleich groß.

Verstehe aber das Problem noch nicht, um einen Vektor der Länge 1000m darzustellen würde ich einfach einen Vektor der Länge 10cm zeichnen ? Also bei 100m/px.
 

hdi

Top Contributor
Also muss ich wissen, welche Realstrecke durch ein Pixel repräsentiert wird.
Du meinst so wie man zB auch in einem beliebigen Spiel wissen muss, wieviel Realstrecke der Welt durch einen Pixel repräsentiert wird? Das legst du doch selbst fest! Du musst doch aber nicht wissen, wie groß dieser Pixel tatsächlich auf dem Bildschirm ist. Ist doch völlig wurscht, du rechnest doch nur in logischen Einheiten.
 

HimBromBeere

Top Contributor
btw müsste dein Programm dann auch darauf reagieren können, wenn ich das Fenster von meinem 19" 1280*1024 auf meinen 17" 1280*1024 schiebe, da sind die Pixel ja wohl kaum gleich groß.
So sieht´s aus
Verstehe aber das Problem noch nicht, um einen Vektor der Länge 1000m darzustellen würde ich einfach einen Vektor der Länge 10cm zeichnen ? Also bei 100m/px.
Ich kann doch nicht jedes Mal beim Zoomen den Nutzer ein Lineal anlegen und die aktuelle Größe einer realen Referenzstrecke eingeben lassen...
 

Cola_Colin

Top Contributor
Eingeben ? wieso den eingeben ? Du setzte einfach fest: Ein Pixel steht für 100m und zeichnest dann deinen Vektor.
Fertig.
Wo fängt das Problem an ?
 

hdi

Top Contributor
Sorry, du ich peil das einfach nicht.. Kannst du nochmal für Dumme erklären, wieso genau du wissen musst wie groß dieser Kartenausschnitt auf dem Bildschirm des Users ist? Ich kann mir einfach nicht vorstellen wofür das ne Rolle spielt.
 

HimBromBeere

Top Contributor
Pass auf:

ich zeichne eine Linie, die in der realen Welt 1m lang ist. Die bekommt auf dem Bildschirm 10px Länge, soweit alles klar. Nun ergibt aber schlichtweg eine Maßstabsangabe der Art px/m wenig Sinn (da kein Mensch Pixel auf ´nem Bildschirm zählen kann/will). Auf einer Papierkarte willst du ja auch nicht die Angabe haben: 5Druckpunkte entsprechen 20m, sondern 5cm entsprechen 20m, oder was nutzt du für Karten?!
 

hdi

Top Contributor
Ja, aber dann musst du doch nur eine Linie dazu zeichnen, die eben 10px lang ist und wo drüber steht "das sind 100 meter". Und dann hat der User die selbe Referenz die man auch als Mensch mit ner realen Landkarte hätte. Verstehst du der Maßstab wird ja stimmen, egal ob diese 10px = 100m nun auf dem Schirm 1,9823 cm sind oder 2,002348.
 
G

Gast2

Gast
Kannst du nicht selbst einfach nen Maßstab mit ausgeben? Dann kann man sich daran orientieren (wenn mans will). Alles andere halte ich für nicht möglich, da du nicht weißt was das Ausgabegerät damit macht.
 

Cola_Colin

Top Contributor
Eventuell könnte man die Pixelgröße mehr oder weniger genau daraus errechnen, wie groß der Monitor ist und welche Auflösung er hat.
Auflösung bestimmen ist ja einfach, Monitorgröße... keine Ahnung, Windows kennt die ja durchaus, im Notfall den Nutzer einmal fragen. Aber so genau wäre das vermutlich alles nicht.
 

HimBromBeere

Top Contributor
Ja, aber dann musst du doch nur eine Linie dazu zeichnen, die eben 10px lang ist und wo drüber steht "das sind 100 meter". Und dann hat der User die selbe Referenz die man auch als Mensch mit ner realen Landkarte hätte. Verstehst du der Maßstab wird ja stimmen, egal ob diese 10px = 100m nun auf dem Schirm 1,9823 cm sind oder 2,002348.

Das ist richtig, nennt sich graphischer Maßstab. Nun wär´s aber schön, wenn man auch noch ´nen numerischen Maßstab unten drunter hätte, wie mir scheint, ist das aber gar nicht mal so einfach... verstehe nur nicht, dass solche Dinge wie Bildschirmgröße und Farbtiefe ermittelt werden können, aber nicht die phys. Pixelgröße... (ich meine, die meisten Monitore haben heutzutage 96dpi, aber einige haben auch 72dpi, das muss man doch rausbekommen).
 

hdi

Top Contributor
Nun wär´s aber schön, wenn man auch noch ´nen numerischen Maßstab unten drunter hätte
Warum?? Was will ich mit ner Linie auf dem Bildschirm wo drunter steht "das sind 1,34cm auf deinem Bidlschirm". Was soll mir diese Info bringen, das hat doch nix mit dem Größenverhältnis der Landkarte zu tun, die ich mir da grad ansehe. Ich komm mir immer dümmer vor :oops:
 
G

Gast2

Gast
Stichwort: WYSIWYG

Du brauchst die DPI des Monitors, nichts des Betriebssystems ... (Letzteres sollte sich irgendwie [spätestens mit JNI/JNA] auslesen lassen) ... Dummerweise brauchst Du die DPI des Monitors - dann kannst Du auch Deine Pixel exakt berechnen ... ich weis leider nicht wie Du da rann kommst - evt. auch mittels JNI/JNA

unter Gnome2 gab es (gibt es noch) ein Lineal-Widget ... da konnte man so lange an den DPI stellen bis das Lineal auf dem Monitor exakt 10cm in der Realität waren

hand, mogel
 

Cola_Colin

Top Contributor
Farbtiefe und Auflösung benötigt der Computer, um das Bild für den Monitor zu zeichnen, die Pixelgröße ist hingegen total egal dafür.

Wenn es nur darum geht, dem Nutzer zu ermöglichen, zu messen wie weit es von A nach B ist, dann wäre eine Hilfstool wie schon gesagt eh am besten. Der Nutzer klickt einfach nur an zwei Punkte und ihm wird berechnet, wie weit die Punkte voneinander entfernt sind. Oder er zieht oder eine Linie, oder sowas.
 

HimBromBeere

Top Contributor
Also ehrlich gesagt, wenn ich auf´m Bildschirm oder auf´m Papier ´ne Karte hab und mal schnell überschlagen möchte, wie weit es von a nach b ist, nehm ich lieber einen numerischen Maßstab, da weiß ich sofort: ok, ein cm entspricht 50km, das sind so etwa 10cm hier auf der karte-->dann wird die Strecke München Hamburg wohl etwa 650km lang sein... da muss ich nicht erst das Lineal ansetzen, um meine Vergleichsstrecke auszumessen... kann denn echt niemand hier dieses Anliegen nachvollziehen?!
 

hdi

Top Contributor
Ich finde es wär ein Thumbs Down für deine Software, wenn sie kein Feature unterstützt eine Entfernung zu berechnen. Für den User ist es doch super bequem zwei Punkte zu klicken auf der Karte, oder mal schnell die Maus zu draggen. Geht noch schneller als das einfach so im Kopf zu überschlagen, und das Ergebnis deiner Software wär auch ganz genau. Würdest du denn zB auf google maps lieber im Kopf abschätzen wie weit das ungefähr ist, obwohl du einfach nen Punkt anklicken kannst und du hast ne meter-exakte Angabe?
 

HimBromBeere

Top Contributor
Hmmmmm... du meinst do ein kleines Mess-Werkzeug? Das wäre natürlich eine Alternative...


dass ihr alle allerdings mit numerischen Maßstäben nicht umgehen könnt/wollt, ist mir ein Rätsel... :shock: Ich bin sicherlich nicht der Einzige, der auf einer Karte eine Angabe wie 1 : 50000 begrüßt... scheint wohl aber eher ein kartographisches Bedürfnis als eine informatorische Notwendigkeit zu sein, zu schade...


Danke trotzdem für die Mühe
 

hdi

Top Contributor
Du scheinst noch immer nicht zu verstehen, dass 1:50000 völlig unabhängig von der Größe der Pixel ist. Es ist egal, wie groß ein Pixel ist, es geht ja nur darum dass deine Software ein Pixel auf 50000 mappt, sowohl logisch als auch grafisch. Was deine GUI malt unterliegt ja der Hardware, also der Größe eines Pixels in der Realität auf dem Monitor. Aber den Wert davon musst du nicht wissen, um das korrekt zeichnen zu können, das übernimmt die Hardware ja für dich. Du rechnest in Pixel, fertig. Der Maßstab wird immer stimmen.
 

HimBromBeere

Top Contributor
Aber bei der Angabe von 1 : 50000 denkt kein Schwein daran, dass das Pixel sein könnten... jeder normale Durchschnittskartennutzer wird doch da wohl cm als Bezugseinheit annehmen. Schonmal ´ne Karte gesehen, die so einen komischen Maßstab aufweist?
Vlcht. sollte ich einfach mal erwähnen, dass es sich tatsächlich um eine Geoanwendung handelt und die Herangehensweise an Anwendungen mit räumlichem Hintergrund (zumindest unter Fachidioten wie mir) meist vom Maßstab ausgeht bezogen auf cm-->m.

Ich werd einfach bei Gelegeneit mal den Geoinformatiker meines Vertrauens heranziehen :D
 

Cola_Colin

Top Contributor
Das ist doch egal, wenn da 1:50000 steht, dann sind das 1cm:50000cm oder 1km:50000km oder 1px:50000px
Das Verhältnis bleibt doch gleich. Für das grobe per Auge abschätzen kannst du eben eine Linie von 1km zeichnen und daran kann dann der Nutzer grob abschätzen. Genauere Angaben soll der Nutzer eh nicht abschätzen müssen, die wird er sicher ausmessen wollen, mit einer entsprechenden Funktion des Programmes. Sonst könnte man sich ja gleich eine Karte in die Hand nehmen und den Computer aus lassen.
 

Schandro

Top Contributor
dass ihr alle allerdings mit numerischen Maßstäben nicht umgehen könnt/wollt, ist mir ein Rätsel... Ich bin sicherlich nicht der Einzige, der auf einer Karte eine Angabe wie 1 : 50000 begrüßt... scheint wohl aber eher ein kartographisches Bedürfnis als eine informatorische Notwendigkeit zu sein, zu schade...
Ja, auf einer technologisch vollkommen veralterten physikalischen Karte ist ein Maßstab centimer -> reale meter sinvoll um ein Lineal anlegen zu können und damit die realen meter herauszufinden. Wenn man dagegen einen Rechner nimmt, der einen das Ausmessen der realen Meter abnimmt bzw. ein Lineal darstellt welches im richtigen Verhältnis zu den Pixeln der Karte steht, dann ist es 100% egal wieviel millimeter ein pixel breit ist. Oder hast du vor ein Lineal an deinem Bildschirm zu halten :lol:? Tut mir Leid, aber es gibt absolut kein Argument warum man die reale Größe eines Pixels für eine solche Anwendung bräuchte. Für mich klingt es so als würdest du mit Biegen und Brechen eine Funktion implementieren wollen die niemand braucht, die aber von Leuten die keine Ahnung von PC's haben vermisst werden würde weil sie es nicht besser wissen.
 
Zuletzt bearbeitet:

HimBromBeere

Top Contributor
Erstens:
Oder hast du vor ein Lineal an deinem Bildschirm zu halten
Hab ich schon häufiger gemacht (bei riesigen Benutzeroberflächen geht das oft schneller als das Auffinden des notwendigen Werkzeuges).

Zweitens: physikalische Karten - wie du sie nennst - werden wohl in näherer Zukunft nicht veralten, schlichtweg deswegen, weil für Großteile der Erde nichts anderes zur Verfügung steht (v.a. nicht im geünschten MAßSTAB, womit wir wieder bei diesem Thema wäre :D).
Drittens:
aber es gibt absolut kein Argument warum man die reale Größe eines Pixels für eine solche Anwendung bräuchte.
Was hälst du von Minimaldimensionen? Die ist zwar abhängig von der Entfernung zum Bildschirm, aber die setzen wir einfach mal ganz ingeniuer-mathematisch als konstant voraus :D 2Px Minimalabstand sind halt nicht gleich 2Px, v.a. dann nicht, wenn man vorhat, das Produkt dann später mal auszudrucken oder sonstwie zu reproduzieren...

Naja, wie auch immer... ich lege dieses Thema hiermit auf Eis und werde mal in diverser Sekundär- (oder tertiär, oder quartär, oder...:shock:) weitersuchen
 
Zuletzt bearbeitet:

bERt0r

Top Contributor
Was du nicht verstehen willst: Kein Maßstab auf irgendeiner Karte trägt die Angabe "1cm : 50000cm". Maßstäbe sind immer ein Verhältnis und sind Dimensionslos. Sie haben keine Messgröße. Wenn du dir die Schreibweise ansiehst, merkst du dass das du das auch als eins durch fünfzigtausend anschreiben kannst. In so einem Bruch würde das "cm" sowieso weggekürzt.

Angenommen du hast in einem Programm jetzt irgendeinen Maßstab z.B 1:523321. Selbst dann kannst du noch ein Lineal auf deinen Bildschirm legen, einen cm abmessen und weißt dann, dass diese Entfernung in Wirklichkeit 523321 cm sind. Das selbe kannst du mit jeder anderen Messgröße machen.
 

HimBromBeere

Top Contributor
Sie haben keine Messgröße. Wenn du dir die Schreibweise ansiehst, merkst du dass das du das auch als eins durch fünfzigtausend anschreiben kannst. In so einem Bruch würde das "cm" sowieso weggekürzt.
Genau DAS will ich doch die ganze Zeit sagen. Ein echter Maßstab hat keine Einheiten dran. Schauen wir uns das mal in unserer Anwendung an: wir haben eine reale Strecke (z.B. die Ausdehnung des Kartenbereiches: 5km). Diese 5km sollen innerhalb eines Fensters von 500px Breite eingepasst werden, d.h. jedes Pixel repräsentiert einen Bodenausschnitt von 10x10m.
Also: 1px -->10m
ABER: die Einheiten px und m lassen sich eben NICHT einfach mal so eben wegkürzen. Folglich ist der Kartenmaßstab auch nicht 1 : 10, auch nicht 1 : 1000 oder sonstwas Gerades, weil px und m sich nicht einfach ineiandner umrechnen lassen

Ein Beispiel:
Eine Kunde kommt zu uns und sagt: erstelle mir bitte eine Karte im Maßstab 1 : 50.000. Der darzustellende Bereich ist 5x5km. Die bauen wir ihm mal schnell, nun wollen wir sie in Originalgröße auf dem Bildschirm mal ansehen (in einer 50000er Karte sind 5km 10cm, wenn ich nicht irre), also möchte ich meine Karte auf dem Bildschirm genau in dieser Größe darstelllen (z.B. weil der Drucker im Büro gerade kaputt ist und ich deshalb nicht mal eben schnell einen Probedruck machen kann). Aber wieviele Pixel sind das? Ohne eine Umrechnung von Pixel in (metrische) Bildschirmkoordinaten komm ich hier nicht weiter.


So, ich hoffe, jetzt wird die ganze Sache verständlicher.
Falls dem nicht so sein sollte, ist das auch egal: ich möchte nun nach sp langer Diskusion nicht mehr über die Sinnhaftigkeit dieses Vorhabens streiten (es soll ja durchaus Sachverhalte geben, die nicht jeder versteht...).
Die Frage, ob man die Bildschirmauflösung in Java auslesen kann, ist unabhängig davon nämlich nicht beantwortet. Um die Verwendung dieser Erkenntnis kümmere ich mich dann gewzungernermaßen allein...
 
I

irgendjemand

Gast
ohne mir jetzt alles durchgelesen zu haben lehne ich mich mal aus dem fenster und wage mal folgendes zu behaupten

was du also vorhast ist ein maßstab zu basteln den man mit nem messchieber *oder anderem präzisen messwerkzeug* dierekt vom monitor abmessen kann ?

sorry ... aber das ist schwachsinn ...

in der praxis wird es eher so gemacht das halt eine linie dazu gezeichnet wird die einen festen wert je einem pixel hat ... dabei ist es jedoch völlig egal wie groß diese pixel sind ...

schau dir mal das beispiel von google maps an ...

der dort verwendete maßstab hat auch keinerlei zugriff auf die DPI auflösung des monitors ... woher soll google jetzt also wissen das der dort mit pixeln gezeichnete maßstab auch wirklich z.b. 10cm deines lineals entspricht was du an den monitor hälts ?

es läuft eher sorum das das du einen maßstab vorgegeben bekommst und dann *wozu auch immer* die reale länge dieses mit pixeln dargestellten striches abnehmen kannst *wobei ein lineal schlicht zu ungenau ist ... ich würde hier mindestens einen messchieber 5/10 oder sogar 2/10 nutzen ... das ist deutlich präzieser wenn man mal gelernt hat mit sowas umzugehen* und dir dadurch ausrechnen kannst wie viel cm der dir präsentierten karte auf DEINEM monitor einer gewissen länge in der realität entsprechen ...


mal davon abgesehen : ich glaube kaum das du selbst mit nativen mitteln und der modernsten hardware an diesen wert kommen wirst ...
sicherlich mag die technik soweit sein das die software des monitors der grafikkarte mitteilen kann wie viel DPI er hat bzw seine reale größe und man sich die DPI selbst ausrechnen kann ... aber sowas kann auch fehleranfällig sein *z.b. habe ich einen 20zoll monitor ... meine grafikkarte faselt aber was von nur 15,4zoll ... -> fehlerquelle* ...
und selbst wenn wäre das so treiber- und hardwarespezifisch das du da schlecht was allgemeines mit JNA bauen könntest *von JNI mal zu schweigen* ...
 
G

Gast2

Gast
kann denn echt niemand hier dieses Anliegen nachvollziehen?!

entweder erklärst Du Dein Problem ungünstig oder Du hast mich nicht verstanden

wenn Du zwei Monitore mit 1280x1024 Pixel hast und dort zwei Punkte zeichnest ... dann sind die Punkte auf einem 17" Monitor näher zusammen als auf 24" ... wenn die Punkte aber im gleichen Abstand gezeichnet werden sollen - z.B. immer exakt 10cm - dann brauchst Du die DPI des Monitors ... wenn es nichts gibt um diese Auszulesen, dann muss der Benutzer den DPI-Wert angeben - Beispiel nannte ich ja schon
 
V

vanny

Gast
Och Jungs, der arme TO:oops:

Sein Problem ist doch eigentlich klar, er möchte wissen OB und WIE er 10cm auf der Karte zu 10cm auf dem Monitor machen kann.

Das WARUM ist hier auch ausgiebig und durchaus berechtigt in Frage gestellt worden.

Zusamenfassende Antwort:
Mit Boardmitteln von Java geht es nicht.
Per JNI anscheinend auch nicht.
Somit wird der User wohl für jeden Monitor eine Kalibrierung vornehmen müssen, an der sich dein Programm dann orientiert.


Ich hoffe das ist die Antwort, die du suchst.

Gruß Vanny
 

HimBromBeere

Top Contributor
Zusamenfassende Antwort:
Mit Boardmitteln von Java geht es nicht.
Per JNI anscheinend auch nicht.
Somit wird der User wohl für jeden Monitor eine Kalibrierung vornehmen müssen, an der sich dein Programm dann orientiert.
Wow, hätte nicht gedacht, dass ich doch noch eine einigermaßen passende Antwort auf meine Ftrage bekomme... wenngleich auch keine wirklich befriedigende.

in der praxis wird es eher so gemacht das halt eine linie dazu gezeichnet wird die einen festen wert je einem pixel hat ... dabei ist es jedoch völlig egal wie groß diese pixel sind ...
Oha, da kennt jemand die Systemarchitektur morderner Geoinformationssysteme... nicht. Aber das stelle ich hier auch keinem in Rechnung.
Übrigens: Google.Maps ist für die Anwendung ein denkbar schlcheter Vergleich, da es auch nicht für genaues Zeichnen und schon gleich gar nicht für komplexe räumliche Anwendungen gedacht ist, nur so am Rande...


Wie dem auch sei, da ich nicht annehme, dass ich hier noch eine weitere Anwtort auf meine Frage bekomme, schließe ich das Thema jetzt mal, bevor wir uns hier alle noch in die Haare bekommen...
 

Bile Demon

Bekanntes Mitglied
Ich erlaube mir mal zu erwähnen, dass ich ja anstelle eines Monitors doch einen Beamer verwenden könnte - und da kann das Ausgabemedium auch gar nicht wissen, wieviele DPI das an der Wand nun sind. Scheint mir also grundsätzlich der falsche Weg zu sein, über eine solche Information zu gehen.
 
I

irgendjemand

Gast
Ich erlaube mir mal zu erwähnen, dass ich ja anstelle eines Monitors doch einen Beamer verwenden könnte - und da kann das Ausgabemedium auch gar nicht wissen, wieviele DPI das an der Wand nun sind. Scheint mir also grundsätzlich der falsche Weg zu sein, über eine solche Information zu gehen.

full ack ... und war auch irgendwie der hintergrund meiner aussage ...

@TO
nimm dir mal das beispiel *vielleicht aber mal mit ner bewegbaren leinwand anstatt ner wand bzw veränderung der position des beamers* ... dann wirst du feststellen : selbst wenn du softwaremäßig rausbekommen kannst wie viel DPI das ausgabegerät theoretisch hat du davon nicht auf die wirklich herrschenden bedingungen schließen kannst ...
egal ob es darum geht eine karte so darzustellen das "10cm auf der karte auch wirklich 10cm des ausgabegerätes entsprechen" oder meinetwegen komplexen 3D-hologrammen *mal so n bissl rumgesponnen* ...

ich denke das was du vorhast wird sich so nicht ohne user-input umsetzen lassen ...

*mal davon abgesehen ist das beispiel des beamers perfekt um folgendes vielleicht zu verdeutlichen : wenn wir bei den 10cm bleiben kann es sein das die pixel so liegen das du dann entweder nur 9,8cm oder nur 10,2cm darstellen kannst ... aber die genauen 10cm nicht treffen kannst aufgrund der bedingung das genau dieser abschnitt in mitten eines einzelnen pixels liegt und nicht genau auf der grenzen zwischen zwei benachbarten ...*
 

ChrisX

Mitglied
Ich verstehe nicht warum ich bei einer Kartendarstellung in einem metrischen Maß rechnen muss, reicht es nicht wenn das Verhältnis z.b. 1:1000 korrekt dargestellt wird?

Bei DTP kann ich so eine Anforderung noch vielleicht nachvollziehen, aber bei kartografischen Anwendungen...hmm

Ich denke ohne manuelle Kalibrierung wird die Anforderung des Threadstarters nicht zu erfüllen sein, oder ich bin auch einfach zu dumm dies alles hier zu kapieren.

Gruß Chris
 

andiv

Bekanntes Mitglied
Unter Windows gibt es die Funktionen GetDC und GetDeviceCaps. Mit Letzterer müssten sich die von dir gewünschten Informationen abfragen lassen.

Um die Funktionen von Java aus aufzurufen musst du dann natürlich JNI verwenden.
 

HimBromBeere

Top Contributor
DANKE Andiv, genau soetwas hab ich gesucht. Hätte mich enorm gewundert, wenn es diese Möglichkeit nicht geben würde (zumindest in C++ war sie mir bereits unter die Augen gelaufen). Ist zwar leider nur ´ne Windows-Geschichte, aber wird für´s erste seinen Zweck erfüllen.

Sinn und Verständnis hin oder her, ich mache dieses Thema nun endgültig dicht...
 

andiv

Bekanntes Mitglied
Für Linux gibt es ähnliche Funktionen in der XLib. Eine Google-Suche nach "XLib DisplayWidthMM DisplayHeightMM" spuckt durchaus brauchbare Ergebnisse aus. Je nachdem welche Betriebssysteme du noch unterstützen willst findest du dafür sicher auch noch passende Funktionen in der jeweiligen API.
 

ChrisX

Mitglied
Hätte nicht gedacht, dass es so etwas doch gibt. Tja, man lernt halt nie aus und wer weiß, vielleicht braucht man es irgendwann doch noch mal...
 

Ähnliche Java Themen

Neue Themen


Oben